C++ 赋值运算和拷贝赋值函数的区别
2011-01-12 17:10
183 查看
面试中被问到这个问题:A是一个class
A a;
A b;
b = a;
与
A a;
A b = a;
是否一样
网上查了一下:
拷贝构造函数,经常被称作X(X&),是一种特殊的构造函数,他由编译器调用来完成一些基于同一类的其他对象的构件及初始化。它的唯一的一个参数(对象的引用)是不可变的(因为是const型的)。这个函数经常用在函数调用期间于用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。
在C++中,下面三种对象需要拷贝的情况。因此,拷贝构造函数将会被调用。
1). 一个对象以值传递的方式传入函数体
2). 一个对象以值传递的方式从函数返回
3). 一个对象需要通过另外一个对象进行初始化
这个问题是第3种情况。
前一种,要调用缺省构造和operator =;
第二种,只要调用拷贝构造函数
A a;
A b;
b = a;
与
A a;
A b = a;
是否一样
网上查了一下:
拷贝构造函数,经常被称作X(X&),是一种特殊的构造函数,他由编译器调用来完成一些基于同一类的其他对象的构件及初始化。它的唯一的一个参数(对象的引用)是不可变的(因为是const型的)。这个函数经常用在函数调用期间于用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。
在C++中,下面三种对象需要拷贝的情况。因此,拷贝构造函数将会被调用。
1). 一个对象以值传递的方式传入函数体
2). 一个对象以值传递的方式从函数返回
3). 一个对象需要通过另外一个对象进行初始化
这个问题是第3种情况。
前一种,要调用缺省构造和operator =;
第二种,只要调用拷贝构造函数
相关文章推荐
- C++中拷贝构造、赋值构造的区别
- c++-赋值与初始化的区别
- 批注:C++中复制构造函数与重载赋值操作符总结:默认浅拷贝,带指针的需要深拷贝
- C++ 构造函数 深拷贝和浅拷贝的区别和用途
- Python 赋值、浅拷贝、深拷贝的区别?
- Effective C++ <二>:构造,析构,赋值运算
- 用汇编的眼光看C++(之拷贝、赋值函数)
- 请用c++ 实现stl中的string类,实现构造,拷贝构造,析构,赋值,比较,字符串相加,获取长度及子串等功能。
- 用汇编的眼光看C++(之拷贝、赋值函数)
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- C++浅拷贝和深拷贝的区别
- 复习几个C++概念:声明与定义、传值与拷贝构造、初始化和赋值
- C++中浅拷贝和深拷贝的区别
- Python中的赋值、浅拷贝、深拷贝的区别?
- 指针赋值 int a[5]={.... ...}, a 、&a[0]、 &a三者之间的区别 浅析 C/C++求职面试必备考点(五) .
- 从string类谈C++深浅拷贝的区别和意义
- C++中的运算符合赋值问题
- 用汇编的眼光看C++(之拷贝、赋值函数)10
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- C++深拷贝和浅拷贝区别