#include <iostream>
using namespace std;
struct Test {
/*因为写了构造函数,所以要想默认构造的话必须自己定义*/
Test(){//默认构造函数
cout << "Test" << endl;
}
Test(const Test const &)//拷贝构造函数
{
//Test前面的const只是限制了对Test对象的修改,所以加了const限制仍然是拷贝构造函数
//&前面的const可有可无,因为引用本来就是const的(注意引用的对象不一定是const的)
cout << "Test&" << endl;
}
Test(const Test const &&) noexcept//移动构造函数,移动不可能抛出异常应该标记noexcept
{
cout << "Test&&" << endl;
}
};
int main() {
Test t, t2 = t, t3 = move(t2);
//一旦自己写了任何构造函数(包括拷贝移动构造),那么就删除默认构造函数。
//
//拷贝移动构造只需要一个参数分别是T&和T&&,T是否const无所谓,该参数只管接受。
//引用本身是否const都无意义,因为引用必须且只能初始化一次;
}
/*
Test
Test&
Test&&
*/
C++ 默认、拷贝、移动构造函数
最新推荐文章于 2024-04-22 16:24:20 发布