知识点:
解释:拷贝构造函数是一种特殊的构造函数,它具有一般构造函数的所有特性,但其形参是本类对象的引用。
作用:使用一个已经存在的对象(由拷贝构造函数参数指定)去初始化同类的一个新对象。
定义格式:构造函数名 (&类名);
三种使用情况:
注意:
该例重点阐述:为什么拷贝构造函数的参数必须为同类对象的引用?
#include <iostream>
using namespace std;
class Complex {
private:
double real, image;
public:
Complex(double r, double i); //声明构造函数
Complex(Complex &c); //声明拷贝构造函数
Complex add(Complex c);
void Output();
};
Complex::Complex(double r, double i): real(r), image(i) { //构造函数初始化列表
cout << "调用两个参数的构造函数" << endl;
}
Complex::Complex(Complex &c) {
real = c.real;
image = c.image;
cout << "调用拷贝构造函数" << endl;
}
void Complex::Output() {
cout << "(" << real << "," << image << ")" << endl;
}
Complex Complex::add(Complex c) {
Complex y(real + c.real, image + c.image);
return y;
}
void f(Complex n) {
cout << "n=";
n.Output();
}
int main() {
Complex a(3.0, 4.0), b(5.6, 7.9); //创建Complex类的两个对象a,b
Complex c(a); //使用拷贝构造函数,用已创建的对象a初始化要建立的另一个对象c
cout << "a=";
a.Output();
cout << "c=";
c.Output();
f(b);
c = a.add(b);
c.Output();
}
程序运行结果:
调用两个参数的构造函数
调用两个参数的构造函数
调用拷贝构造函数
a=(3,4)
c=(3,4)
调用拷贝构造函数
n=(5.6,7.9)
调用拷贝构造函数
调用两个参数的构造函数
(8.6,11.9)
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有