【发布时间】:2015-02-07 15:40:54
【问题描述】:
我有以下 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&'
为什么?
【问题讨论】:
-
您没有为 test1 创建一个将 test3 对象作为参数的构造函数。你期待什么? (如果你指的是
test1 t2(test2());,这很可能是 MVP) -
t4不能构造是有道理的,但是为什么t3可以构造呢? t3和t4有区别吗?
-
是有区别的,t2和t3是函数声明,不是变量定义,顺便说一下t1也是。
标签: c++ constructor copy-constructor