如何解决函数中类实例的生命周期
以下最少的代码说明了我的困惑。应该在函数 a(x)
中销毁 create()
吗?为什么 m
和 a
完全一样。为什么从不调用复制构造函数?
#include <iostream>
using namespace std;
class Board{
public:
int a[10000];
int s = sizeof(a)/sizeof(a[0]);
Board(int x){
for(size_t i=0; i < s; ++i){
a[i] = x;
}
};
Board(const Board& other){
memcpy(a,other.a,sizeof(int)*s);
cout << "copy constructor called" << endl;
};
Board& operator=(const Board&) = default;
~Board(){
cout << "board destroyed" << endl;
};
};
Board create(int x){
Board a(x);
cout << &a << endl;
return a;
}
Board mycreate(int x){
return create(x);
}
int main(){
auto m=create(3);
cout << &m << endl;
auto m2(mycreate(3));
cout << &m2 << endl;
}
输出:
0x7ffee7f18cf8
0x7ffee7f18cf8
0x7ffee7f0f0a8
0x7ffee7f0f0a8
board destroyed
board destroyed
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。