面向对象程序设计-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运算符重载——类型转换的主要内容,如果未能解决你的问题,请参考以下文章

面向对象程序设计-C++_课时22向上造型

Python入门-6面向对象编程:10特殊方法和运算符重载-特殊属性

面向对象程序设计-C++_课时28静态对象_课时29静态成员

面向对象程序设计-C++_课时19const_课时20不可修改的

面向对象程序设计-C++_课时26拷贝构造Ⅰ_课时27拷贝构造Ⅱ

面向对象程序设计-C++_14对象组合_课时15继承