MOOC清华《面向对象程序设计》第4章:explicit禁止自动类型转换实验
来源:互联网 发布:软件测试项目计划书 编辑:程序博客网 时间:2024/06/07 06:48
#include <iostream>using namespace std;class Src;//前值类型声明,因为在Dst中要用到Src类 class Dst{public:Dst(){cout << "Dst::Dst()" << endl;}explicit //<1>不准用于自动类型转换 Dst(const Src& s){cout << "Dst::Dst(const Src&)" << endl;}};class Src{public:Src(){cout << "Src::Src()" << endl;}//explicit //<2>不准用于自动类型转换 operator Dst() const{cout << "Src::operator Dst called" << endl;return Dst();}};void Func(Dst d){}int main(){Src s;Dst d1(s);//这是直接构造,不能视为类型转换 //以下语句均使用了自动类型转换,当构造函数、类型转换函数 //均使用了explicit声明时,它们就不能用于自动类型转换了,//故下面的语句都不能通过编译! Dst d2 = s;//ERROR!不能自动类型转换! Func(s);//ERROR!不能自动类型转换!//解决问题的办法:<1>和<2>处的explicit//不能都去掉,也不能都保留,只留一个,就可以通过编译了 return 0; }
两处的explicit都留的话,编译器会报错,英文大意是:不能进行自动类型转换。
只留<1>处的explicit运行结果是:
只留<2>处的explicit运行结果是:
两处的explicit都不留,依然可以通过编译:
阅读全文
0 0
- MOOC清华《面向对象程序设计》第4章:explicit禁止自动类型转换实验
- MOOC清华《面向对象程序设计》第4章:delete禁止自动类型转换实验
- MOOC清华《面向对象程序设计》第4章:自动类型转换实验
- MOOC清华《面向对象程序设计》第4章:强制类型转换实验
- MOOC清华《面向对象程序设计》第2章:类型推导操作符decltype实验
- MOOC清华《面向对象程序设计》第4章:继承基类构造函数实验
- MOOC清华《面向对象程序设计》第4章:函数重写实验
- MOOC清华《面向对象程序设计》第4章:向上映射实验
- MOOC清华《面向对象程序设计》第4章:虚函数实验
- MOOC清华《面向对象程序设计》第4章:虚析构函数实验
- MOOC清华《面向对象程序设计》第4章:函数模板实验
- MOOC清华《面向对象程序设计》第4章:函数模板的特化实验
- MOOC清华《面向对象程序设计》第4章:类模板的特化实验
- MOOC清华《面向对象程序设计》第3章:对象组合实验
- MOOC清华《面向对象程序设计》第2章:私有成员与公有成员不可同名实验
- MOOC清华《面向对象程序设计》第2章:auto变量实验
- MOOC清华《面向对象程序设计》第2章:new/delete运算符实验
- MOOC清华《面向对象程序设计》第2章:左值引用实验
- 操作系统和linux编程常考题目
- freeswitch modules 模块
- POJ 1979 Red and Black
- vim配置
- 回调函数访问类中的成员
- MOOC清华《面向对象程序设计》第4章:explicit禁止自动类型转换实验
- Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(十一)阶段性小结
- 高一结束的一些总结
- lvm逻辑卷管理
- 图形用户界面编程
- 51Nod-1079-中国剩余定理
- C++中的inline用法
- CodeForces
- 【论文笔记】Learning to log