zLe*_*eon 3 c++ initialization class object self
例如,我有代码:
class test{
public:
test(){
cout<<endl<<"TEST";
}
void another(){
cout<<endl<<"Another";
}
};
int main(){
test chk = chk;
chk.another();
}
Run Code Online (Sandbox Code Playgroud)
在这里,我已经完成了新创建的类型对象的初始化test.
难道这样的初始化服务特殊用途,不这样初始化做任何事情,否则不是初始化test chk;代替test chk = chk;?
我知道如果对象初始化为自身,则无法调用构造函数,但为什么呢?
我想了解更多关于对象自身的初始化.
你被允许写:
test chk = chk;
Run Code Online (Sandbox Code Playgroud)
[basic.scope.declarative]/P1
第一个的潜在范围在此
j之后立即开始j
一个隐含的拷贝构造函数因此被调用.您可能已经使用自己的方法执行一些额外的初始化:
test(const test&) {
cout << endl << "copy ctor";
}
Run Code Online (Sandbox Code Playgroud)
请记住,这不是一个好的做法,在某些情况下甚至可能会导致未定义的行为,Clang总是会发出-Wuninitialized警告.