拷贝构造函数与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常量引用
相关文章推荐
- C++,常量,const,constant,引用,指针,形参,实参,函数,返回值
- 常量在类中的声明(const)以及引用
- C++之类内不同的数据成员类型以及方法(静态,const,引用,常量引用)
- const & 与赋值操作导致出现引用了匿名常量对象
- 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数
- // 程序员面试宝典 62页 ,指针,引用,const常量定以后立即初始化。
- 拷贝构造函数不能传值,只能传引用,而且一般是传const引用
- 常量引用 位拷贝 拷贝构造函数
- C++常量的引用 const
- C/C++几个常见概念分析(指针、引用 、const常量、#define)
- 参数的常量引用const int &a和引用 int &a的区别
- 第十五节 常量const 、 枚举enum 、结构struct 值类型和引用类型
- C++const对象 常量数据 常量成员函数 const指针 const引用
- C++ - const常量与指针和引用之间的关系
- 初始化列表(const和引用成员)、拷贝构造函数
- 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数
- 关于const常量、const指针以及const引用
- 关于const引用、常量指针、指针常量的一些知识
- C++系列之基本数据类型、常量、变量、const、引用、typedef、枚举、类类型、编写自己的头文件
- const 常量 解释 引用 函数