- 1
- 0
- 约1.05万字
- 约 80页
- 2021-08-03 发布于湖北
- 举报
程序设计实习;信息科学技术学院《程序设计实习》 郭炜;运算符重载的需求;运算符重载的需求;运算符重载;运算符重载的形式;运算符重载的形式;运算符重载的形式;运算符重载的形式;运算符重载的形式;运算符重载的形式;运算符重载示例 (P209);int main()
{
Complex a(4,4),b(1,1),c;
c = a + b; //等价于c=operator+(a,b);
cout c.real , c.imag endl;
cout (a-b).real , (a-b).imag endl;
//a-b等价于a.operator-(b)
return 0;
}
输出:
5,5
3,3
c = a + b; 等价于c=operator+(a,b);
a-b 等价于a.operator-(b)
;信息科学技术学院《程序设计实习》 郭炜;信息科学技术学院《程序设计实习》 郭炜;信息科学技术学院《程序设计实习》 郭炜;
有时候希望赋值运算符两边的类型可以不匹配,比如,把一个int类型变量赋值给一个Complex对象,或把一个 char * 类型的字符串赋值给一个字符串对象,此时就需要重载赋值运算符“=”。
赋值运算符“=”只能重载为成员函数
;class String {
private:
char * str;
public:
String ():str(NULL) { }
const char * c_str() { return str; };
String operator = (const char * s);
String::~String( );
};
String String::operator = (const char * s)
{ //重载“=”以使得 obj = “hello”能够成立
if( str)
delete [] str;
if(s) { //s不为NULL才会执行拷贝
str = new char[strlen(s)+1];
strcpy( str, s);
}
else str = NULL;
return * this;
};String::~String( )
{
if( str)
delete [] str;
};
int main()
{
String s;
s = Good Luck, ; //等价于 s.operator=(Good Luck,);
cout s.c_str() endl;
// String s2 = hello!; //这条语句要是不注释掉就会出错
s = Shenzhou 8!; //等价于 s.operator=(Shenzhou 8!);
cout s.c_str() endl;
return 0;
}
输出:
Good Luck,
Shenzhou 8!
;浅拷贝和深拷贝(P213);str;str;如不定义自己的赋值运算符,那么S1=S2实际上导致 和 S2.str 指向同一地方。
;如不定义自己的赋值运算符,那么S1=S2实际上导致 和 S2.str 指向同一地方。
如果S1对象消亡,析构函数将释放 指向的空间,则S2消???时还要释放一次,不妥。;如不定义自己的赋值运算符,那么S1=S2实际上导致 和 S2.str 指向同一地方。
如果S1对象消亡,析构函数将释放 指向的空间,则S2消亡时还要释放一次,不妥。
另外,如果执行 S1 = other;会导致指向的地方被delete
因此要在 class MyString里添加成员函数:
String operator = (const String s) {
if( str)
delete [] str;
str = new char[strlen( s.str)+1];
strcpy( str,s.str);
return * this;
};如不定义自己的赋值运算符,那么S1=S2实际上导致 和 S2.str 指向同一地方。
如果S1对象消亡,析构函数将释放 指向的空间,则S2消亡时还要释放一次,不妥。
另外,如果执行 S1 = other;会导致指向的地方被delete
因此要在 class MyString里添加成员函数:
String operator = (const String s) {
if( str)
delete [] str;
str = new char[strle
您可能关注的文档
- 《成本计算与管理》(舒文存)(第二版) 成本计算与管理(舒文存)ppt 项目一.ppt
- 《成本计算与管理》(舒文存)(第二版) 成本计算与管理PPT(舒文存)新版 成本计算与管理(项目七) .ppt
- 《成本计算与管理》(舒文存)(第二版) 成本计算与管理PPT(舒文存)新版 成本计算与管理(项目十二) .ppt
- 《成本计算与管理》(舒文存)ppt 项目九.ppt
- 《成本计算与管理》(舒文存)新版 成本计算与管理(项目七) .ppt
- 《成本计算与管理》配套课件(高教版) 项目二.ppt
- 《成本计算与管理》配套课件(高教版) 项目四.ppt
- 《城轨行车组织》课件 单元八 突发事件时的行车组织.ppt
- 《城轨行车组织》课件 单元二 城轨车辆与驾驶.ppt
- 《城轨行车组织》课件 单元九 调车作业组织.ppt
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 职业学校学分制实施细则.docx
- AP微观经济学 2010年真题 附答案和评分标准 AP Microeconomics 2010 Real Exam with Answers and Scoring Guidelines.pdf VIP
- T_BIAS 14-2025 预制混凝土构件生产与运输标准.docx VIP
- T_ZAEPI 051-2025 再生有色金属工厂低碳运行评价指标体系.docx VIP
- 部编版五年级语文下册第一单元整体作业设计.docx
- 中国养老产业发展研究报告_1.doc VIP
- 2026年养老产业行业创新报告.docx
- C正谱怜悯我吧上帝 pieta signore.pdf VIP
- 《专业工程管理与实务》.pdf VIP
- 中国血栓性疾病防治指南(2025版).docx VIP
原创力文档

文档评论(0)