您的位置:首页 > 其它

拷贝构造函数与Const常量引用

2013-08-06 23:00 211 查看
class MyInt{
public:
MyInt() {//构造函数
std::cout << "1" << std::endl;
}
MyInt(int a) {//初始化对象时,同时实现赋一个int值
std::cout << "2" << std::endl;
}

void operator =(int a) {//利用运算符对一个已有对象赋值
std::cout << "3" << std::endl;
}

MyInt(MyInt const &b) {//拷贝构造函数
std::cout << "4" << std::endl;
}
};

int main(int argc, _TCHAR* argv[])
{
MyInt a;//利用构造函数生成对象
std::cout << "-------------" << std::endl;
MyInt b = 10;//b(10)完全相同, 利用重载的直接复制构造函数                                                                           std::cout << "-------------" << std::endl;
MyInt c;
std::cout << "-------------" << std::endl;
c = 10;//利用赋值运算符重载给对象c赋值
std::cout << "-------------" << std::endl;
MyInt d;
std::cout << "-------------" << std::endl;
MyInt e = d;//e=d与代码e(d)意思完全相同
return 0;
}




程序详细分析:

1,根据拷贝构造函数的定义,只有MyInt(MyInt const &b)是拷贝构造函数,拷贝构造函数的作用是用一个对象A生成另一个对象B,即对象B是对象A的拷贝。上面代码MyInt e = d;系统为类对象B分配了内存,并且完成了对象的d的复制过程。这种拷贝限于是类的对象,而且必须是同一个类。

参考:http://blog.csdn.net/lwbeyond/article/details/6202256

2,利用运算符重载赋值,参考:http://blog.csdn.net/squirrel_program/article/details/1809091

3,拷贝构造函数必须是const常量引用

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: