64,654
社区成员
发帖
与我相关
我的任务
分享
class yc {
public:
yc() {
cout << "yc construct" << endl;
}
yc(yc&& y) {
cout << "move construct &&" << endl;
}
yc(const yc& y) {
cout << "copy construct&" << endl;
}
yc& operator =(const yc& yy) {
cout << " = constructor" << endl;
return *this;
}
~yc() {
cout << "deconstrutor" << endl;
}
};
yc getY() {
shared_ptr<yc> y(new yc());
return *y;
}
int main(){
yc t(getY());
return 0;
}
输出:
yc construct
copy construct&
deconstrutor
deconstrutor
yc getY() {
shared_ptr<yc> y(new yc());
return *y;
}
cout << typeid(getY()).name() << endl;
cout << typeid(yc()).name() << endl;
输出
class yc
class yc __cdecl(void)
看来是构造函数yc()不能这样用啊,我还以为yc()就是单纯的返回一个对象
感谢层主回答yc y(yc());
cout << &y << endl;
return 0;
输出这个地址自然知道他是错误的语法,它只是一个声明,当然不会调用任何构造函数