【发布时间】:2017-03-01 12:10:58
【问题描述】:
假设我有一个类如下:
class A{
int x ;
A( int i ){
x = i ;
}
}
我还有另一个类 B,它有一个类 A 的实例作为成员对象。
class B{
int y ;
A obj_a ;
B( int j , A a ){
y = j ;
obj_a = a ;
}
}
当我执行以下操作时:
int main(){
A obj1( 1 ) ; // obj.x has value 1
B obj2( 2 , obj1 ) ;
}
第二行抛出一个错误,指出没有 A::A() 形式的函数调用。我知道这意味着缺少默认样式构造函数,但我为什么需要这个? obj1 是使用定义的构造函数创建的,所以这不是问题。
我目前的想法是A a 和obj_a = a 会调用隐式定义的复制构造函数。
注意:为简洁起见,我排除了私有、公共等。
【问题讨论】:
-
发布实际错误。您的 ctor 可能在抱怨应该是
const int i; -
你明确要求它不使用初始化列表。
标签: c++ class c++11 constructor copy-constructor