复制c ++的构造函数

时间:2014-12-09 16:41:15

标签: c++ constructor copy-constructor

我有以下c ++代码:

    class test1{};      
    class test2{ test2();};
    class test3{ test3(int); };

    test1 t1(test1());  //compile ok
    test1 t2(test2());  //compile ok
    test1 t3(test3(int())); //compile ok
    test1 t4(test3(10));    
    //compile error: no known conversion for argument 1 from 'test3' to 'const test1&'

为什么?

1 个答案:

答案 0 :(得分:2)

你说编译好吧实际上并没有做你想要的,它声明了一个函数,它没有定义一个变量。这是Borgleader所指的“最令人烦恼的解析”或MVP。

尝试使用以下内容进行编译,这实际上是您的意思,您将看到它失败:

test1 t2( (test2()) );

您需要定义这些复制构造函数才能使用它们。 test2不是从test1派生的,因此它不能使用继承,也没有为你修复它的神奇类型转换。