c++转换构造函数和类型转换函数
来源:互联网 发布:黑色沙漠游侠捏脸数据 编辑:程序博客网 时间:2024/06/01 13:31
看stl源码时,有一段代码感觉很奇怪
iterator begin() { return (link_type)((*node).next); }
iterator和link_type是两种不同类型,怎么能这么返回呢?翻了一下以前的笔记,发现是由转换构造函数生成临时对象再return。
转换构造函数的作用是将某种类型的数据转换为类的对象,当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数。试验了一下
class A{public: int a; A(int a) :a(a) {} A reta() { return a; }};int main(){ A a(2); A b = a.reta(); A c = 3; cout<<b.a<<"\n"<<c.a<<endl; return 0;}
结果是输出2和3
实际上这是由隐式转换机制造成的,如果不想要这种效果,可以在构造函数前加上explicit声明。加上之后上面的代码就会编译出错,提示
无法从“int”转换为“A”。
既然能将数据转换为类型,类型也能转换为数据。c++的类型转换函数可以将一个类的对象转换为一个指定类型的数据。
类型转换函数的一般形式为 :
operator 类型名()
{实现转换的语句}
测试代码:
class A{public: int a; A(int a) :a(a) {} operator int() { return a; }};int main(){ A a(2); int b = a + 3; A c = a + 4; cout<<b<<"\n"<<c.a<<endl; return 0;}
结果输出5和6
转载:http://www.cnblogs.com/tonychen-tobeTopCoder/p/5178624.html
阅读全文
0 0
- 类型转换构造函数
- 类型转换构造函数
- 类型转换构造函数
- 类型转换构造函数
- C++转换构造函数和类型转换函数
- c++转换构造函数和类型转换函数
- c++知识点---举例说明 转换构造函数 和 类型转换函数
- c++构造函数和类型转换
- c++-转换构造函数
- 类型转换函数 & 转换构造函数
- 类型转换函数 & 转换构造函数
- C++ 类型转换构造函数
- C类型转换函数
- 【c/c++】转换构造函数
- 关于单参构造函数和类型转换函数
- C++——转换构造函数和转换运算符
- 构造函数和类型转换,在构造函数中强制转换,
- 29.c/c++程序员面试宝典-类型转换构造函数
- systool指令
- 从怎样解题到怎样解决问题
- stm32 窗口看门狗 WWDG
- Angular 关于获取Matrix URL 和 普通URL 查询字符串问题
- 通过数据库链接_省市联动
- c++转换构造函数和类型转换函数
- 【GDOI2018模拟8.11】质数
- 【多校连萌三】问题 E: QAQ & 君临天下 || 天行九歌
- bzoj1012 [JSOI2008]最大数(单调栈+二分/线段树)
- Opencv OnMouse()函数
- RHCE——配置链路聚合和桥接
- 训练日记-10
- 达芬奇的鸡蛋
- 移动定位技术