如果只声明了复制构造函数,如何创建第一个对象?

jiy*_*iyi 1 c++ copy-constructor default-constructor

我今天在网上看到了一个C++ 03示例.

class Cat {
    public:
        Cat(const Cat& iCat);
};
Run Code Online (Sandbox Code Playgroud)

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

在这种情况下,有人能告诉我如何创建第一个Cat对象吗?如果我的理解是错误的,请善意地纠正我.

πάν*_*ῥεῖ 5

在这种情况下,有人能告诉我如何创建第一个Cat对象吗?如果我的理解是错误的,请善意地纠正我.

这里唯一有效的答案是:

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


如果声明任何其他构造函数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)
};
Run Code Online (Sandbox Code Playgroud)