c++ - 如果仅声明复制构造函数,如何创建第一个对象?

标签 c++ copy-constructor default-constructor

今天在网上看到一个C++03的例子。

class Cat {
    public:
        Cat(const Cat& iCat);
};

有人告诉我,在这种情况下,编译器不会自动生成默认构造函数。如果为真,则意味着可以从现有的 Cat 对象创建新的 Cat 对象。

谁能告诉我在这种情况下如何创建第一个 Cat 对象?如果我的理解有误,请指正。

最佳答案

Can anyone tell me how to create the first Cat object in this case? or kindly correct me if my understanding is wrong.

这里唯一有效的答案是:

没有办法只使用您发布的代码。您可能错过了与您看到的示例一起提供的一些附加功能。


如果任何其他构造函数被声明为 private,则有一些方法,例如:

class Cat {
    public:
        Cat(const Cat& iCat);
        static Cat* CreateCat(const std::string& color) {
            return new Cat(color);
        }
    private:
        Cat(const std::string& color)
};

关于c++ - 如果仅声明复制构造函数,如何创建第一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43988835/

相关文章:

具有抽象工厂的派生类的 C++11 单例

c++ - 将 QStringList 元素拆分为更多元素

c++在复制构造函数中使用const?

C++:关于对象的一个​​小问题

C++ - Static_assert 和 constexpr 函数在运行时评估的能力

c++ - 函数指针如何替代 switch 语句?

c++ - 在 C++ 中初始化变量的偏好

java - 当没有构造函数的类的默认构造函数是 'automatically' 时,为什么编译器会提示父类(super class)没有构造函数?

c++ - 作为函数参数的字符串对的 C++ vector 的默认规范在 gcc-4.1.2 上无效?

C++ - 使用另一个类的构造函数实例化一个对象