C++ 派生类中的拷贝构造函数以及赋值运算符重载问题
来源:互联网 发布:合金装备5幻痛捏脸数据 编辑:程序博客网 时间:2024/06/08 00:07
由thinking in C++ 的一道题目引发的思考
如何对派生类的拷贝构造函数以及赋值运算符的重载进行编写
下面是一个实例,或许大家看了之后就明白了
#include<iostream>
#include<string>
using namespace std;
class Traveler
{
string str;
public:
Traveler(string s) : str(s) {}
Traveler(const Traveler& t)
{
str = t.str;
}
Traveler& operator=(const Traveler &t)
{
str = t.str;
return *this;
}
string showString()
{
return str;
}
};// class Traveler
class Pager
{
string str;
public:
Pager(string s) : str(s) {}
Pager(const Pager& t)
{
str = t.str;
}
Pager& operator=(const Pager &t)
{
str = t.str;
return *this;
}
string showString()
{
return str;
}
};// class Pager
class BusinessTraveler : public Traveler
{
Pager p;
public:
BusinessTraveler() : Traveler(""), p("") {} //default constructor
BusinessTraveler(string s,string r):Traveler(s),p(r){}// constructor
BusinessTraveler(const BusinessTraveler& b): Traveler(b),p(b.p) {}// copy-constructor
BusinessTraveler operator=(const BusinessTraveler& b) // operator assignment
{
Traveler::operator=(b);
p = b.p;
return *this;
}
friend ostream& operator <<(ostream& out, BusinessTraveler& b); //输出流重载
};
ostream& operator << (ostream& out, BusinessTraveler& b)
{
cout << b.showString() << " " << b.p.showString() ;
return out;
}
int main()
{
BusinessTraveler b1;
BusinessTraveler b2("Mike", "Pager1");
BusinessTraveler b3("Jane", "Page2");
BusinessTraveler b4(b2);
BusinessTraveler b5 = b3;
cout << b1 << endl;
cout << b2 << endl;
cout << b3<< endl;
cout << b4 << endl;
cout << b5 << endl;
}
/*
输出:
Mike Pager1
Jane Page2
Mike Pager1
Jane Page2
*/
第一次发博客。望大家提出问题所在,我会加以改正的 O(∩_∩)O谢谢
- C++ 派生类中的拷贝构造函数以及赋值运算符重载问题
- 类模板以及赋值运算符重载、拷贝构造函数
- [C++]拷贝构造函数和赋值运算符重载
- 拷贝构造函数/重载赋值运算符
- 类的赋值运算符重载和拷贝构造函数
- 20170825_string构造函数、析构函数、拷贝构造函数以及重载赋值运算符
- C++之派生类的拷贝构造与赋值运算符重载
- 拷贝构造函数&构造函数&重载赋值运算符
- 拷贝构造函数&构造函数&重载赋值运算符
- C++中的构造函数,拷贝构造函数,析构函数和赋值运算符重载
- c/c++ 构造函数、拷贝构造函数、析构函数和赋值运算符重载
- 拷贝构造函数,类的赋值运算符重载,深拷贝与浅拷贝
- 拷贝构造函数与赋值运算符的重载函数
- C++赋值运算符重载函数和拷贝构造函数
- String类的构造函数、析构函数、拷贝构造函数、赋值运算符重载
- 重载赋值运算符与拷贝构造函数的区别
- 关于重载拷贝构造函数和赋值运算符
- 拷贝构造函数与赋值运算符重载的区别
- 数据结构 - 冒泡排序(Bubble Sort) 详解 及 代码(C++)
- uva - 311 - Packets(贪心)
- linux太邪恶了
- OpenCV 2.4.8在mingw中读取摄像头
- 二叉搜索树(未完待续)
- C++ 派生类中的拷贝构造函数以及赋值运算符重载问题
- U-boot引导流程分析一
- 让cocos2dx 支持Staggered格式的tmx
- Hibernate 之 一级缓存
- sql server 数据库优化--显示执行计划
- Asterisk针对Mysql的extconfig.conf配置
- 排序的三种思路 欢迎吐槽
- log4j配置祥解--(1)
- java开源CMS系统-JEECMS v2012sp1版源码导入myeclipse步骤