C++关于类的复制函数问题
来源:互联网 发布:matlab mac 激活 编辑:程序博客网 时间:2024/05/17 03:06
在C++中,复制构造函数不可以使用形参,必须使用实参。这是因为如果用形参,编译器会生成一个临时的实参变量用于赋值,而它本身就要用到这个构造函数。假如通过了编译,也会造成死循环。比如:
class A{public:A(A temp){// . . .}/* . . . */};编译器 Visual Studio 2012 会提示Error:类“A”的复制构造函数不能带有“A”类型的参数。
如果修改为:
class A{public:A(A &temp){// . . .}/* . . . */};
就不会有任何问题了。
另外,不能使用如下代码:
class A{public:A(A &temp){*this = temp;}/* . . . */A operator = (A temp){// . . .return *this;}};
它的主要问题是调用了复制赋值运算。
实际上,把赋值的代码放在复制构造函数中,把下面的代码删去也没问题。
0 0
- C++关于类的复制函数问题
- 一点关于复制构造函数的问题
- 关于C语言结构体的赋值(复制)问题
- 关于Matlab调用C函数的问题
- 关于C语言函数调用的问题
- 关于c语言的输入函数问题
- 关于复制初始化的问题
- 关于list的复制问题
- 关于c函数c++函数的调用问题
- 关于拷贝构造函数,类的赋值与复制
- C++:类的复制构造函数、赋值运算符
- 利用feof()函数复制文件的C代码(解决复制后文件多一字符的问题)
- 关于C++的复制构造函数
- 【文件】关于文件的复制函数
- 关于复制构造函数的调用时机
- C++中一个关于复制构造函数和指针的问题
- 最快的C字符串复制函数
- C++:复制构造函数的应用
- 排列组合
- ubuntu下使用extundelete恢复使用rm删除的文件
- 关于Windows与Linux下32位与64位开发中的数据类型长度的一点汇总
- Kinect for Windows SDK开发入门(四):景深数据处理 上
- abap 调用外部web service 使用小结
- C++关于类的复制函数问题
- 记录一点odbc的mysql笔记
- Installing VMware ESXi 5.5 on the Gigabyte Brix
- android下的OpenGL图形开发学习【前言】之为什么要学习OpenGL.
- HTML5 canvas 实现小时钟
- 一些必不可少的Sublime Text 2插件
- 低维数据映射到高维数据可分性理解实例
- JavaScript 语言精粹 学习笔记
- 题目1008:最短路径问题