面向对象程序设计-C++_课时30运算符重载——基本规则_课时31运算符重载——原型_课时32运算符重载——赋值_课时33运算符重载——类型转换
Posted 邓戈麟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象程序设计-C++_课时30运算符重载——基本规则_课时31运算符重载——原型_课时32运算符重载——赋值_课时33运算符重载——类型转换相关的知识,希望对你有一定的参考价值。
区分初始化,赋值
1 #include <iostream> 2 using namespace std; 3 4 class Fi 5 { 6 public: 7 Fi() {}//1构造函数 8 }; 9 10 class Fee 11 { 12 public: 13 Fee(int) {}//2构造函数 14 Fee(const Fi&) {}//3构造函数 15 }; 16 17 void main() 18 { 19 Fee fee = 1;//2构造函数 20 Fi fi;//1构造函数 21 Fee fum = fi;//3构造函数 22 fum = fi;//赋值 23 24 system("pause"); 25 };
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。
1 #include <iostream> 2 using namespace std; 3 4 class One 5 { 6 public: 7 One() {} 8 }; 9 10 class Two 11 { 12 public: 13 explicit Two(const One&) {} 14 }; 15 16 void f(Two) {} 17 18 void main() 19 { 20 One one; 21 22 //f(one);//error C2664: “void f(Two)”: 无法将参数 1 从“One”转换为“Two” 23 24 f(Two(one));//构造一个类Two 25 26 system("pause"); 27 };
以上是关于面向对象程序设计-C++_课时30运算符重载——基本规则_课时31运算符重载——原型_课时32运算符重载——赋值_课时33运算符重载——类型转换的主要内容,如果未能解决你的问题,请参考以下文章
Python入门-6面向对象编程:10特殊方法和运算符重载-特殊属性
面向对象程序设计-C++_课时28静态对象_课时29静态成员
面向对象程序设计-C++_课时19const_课时20不可修改的