c++继承体系中的拷贝控制成员的定义

本文通过具体的C++代码示例,详细介绍了基类和派生类中拷贝构造函数及拷贝赋值运算符的实现方式。同时,展示了移动构造函数和移动赋值运算符的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/***验证继承体系中的拷贝控制成员***/
#include<iostream>
using namespace std;
class Base {
public:
	Base() = default;
	Base(int i, int j) :num1(i), num2(j) { cout << "Base  construct" << endl; }
	Base(const Base& rhs) :num1(rhs.num1), num2(rhs.num2) { cout << "Base copy construct " << endl; }
	Base& operator=(const Base& rhs)
	{
		num1 = rhs.num1;
		num2 = rhs.num2;
		cout << "Base copy =" << endl;
		return *this;
	}
	Base(Base&& rhs):num1(rhs.num1), num2(rhs.num2) { cout << "Base move construct " << endl; }
	Base& operator=(Base&& rhs)
	{
		num1 = rhs.num1;
		num2 = rhs.num2;
		cout << "Base move =" << endl;
		return *this;
	}
	virtual ~Base() { cout << "Base virtual destroy function" << endl; }
	int num1;
	int num2;

};
class Dervied :public Base {
public:
	Dervied() = default;
	Dervied(int i , int j, int m , int n) :Base(i, j), num3(m), num4(n) { cout << "Derived  construct" << endl; }
	Dervied(const Dervied& rhs) :Base(rhs), num3(rhs.num3), num4(rhs.num4) { cout << "Dervied copy construct" << endl; }  //拷贝构造函数
	Dervied& operator=(const Dervied& rhs)   //拷贝复制运算符
	{
		Base::operator=(rhs);
		num3 = rhs.num3;
		num4 = rhs.num4;
		cout << "Dervied copy = " << endl;
		return *this;
	}
	Dervied(Dervied&& rhs) :Base(std::move(rhs)), num3(rhs.num3), num4(rhs.num4) { cout << "Dervied move construct" << endl; }//移动构造函数
	Dervied& operator=(Dervied&& rhs)                           //移动赋值运算符
	{
		Base::operator=(std::move(rhs));
		num3 = rhs.num3;
		num4 = rhs.num4;
		cout << "Dervied move =" << endl;
		return *this;
	}

	virtual ~Dervied()
	{
		cout << "Dervied destroy" << endl;
	}
	int num3;
	int num4;
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值