【菜鸟C++学习笔记】27.通过operator关键字进行类型转换
2012-11-15 09:56
501 查看
在前面说过通过构造函数实现类型的转换,即把数字通过构造函数赋值给一个临时对象,然后把这个临时对象赋值给创建好的对象,实现数值->对象的转换。
这里再说下operator关键词+转换类型构成的重载运算符函数,例如:
operator int()
先定义好转换函数后,下面创建对象:
A a(1)
cout<<int(a)
第一行创建一个对象,并把成员赋值为1,第二行调用转换函数,调用的结果不是返回对象,而是返回对象的数据成员的值,完成程序如下:
输出结果:
分析:
注意定义的operator int()函数虽然没有定义返回值,但它却返回了成员变量n的值,同时可以看到,在21到23行定义了三种调用类型转换函数的方法。
operator转换类型函数的作用:把一个对象转换为int型变量;
比较构造函数的转换作用:把一个变量的值转换为一个对象;
这里再说下operator关键词+转换类型构成的重载运算符函数,例如:
operator int()
先定义好转换函数后,下面创建对象:
A a(1)
cout<<int(a)
第一行创建一个对象,并把成员赋值为1,第二行调用转换函数,调用的结果不是返回对象,而是返回对象的数据成员的值,完成程序如下:
#include <iostream> using namespace std; class A { public: A(){n=0;cout<<"执行不带参数的构造函数"<<endl;} A(int i){n=i;cout<<"执行带一个参数的构造函数"<<endl;} A(A const &r){n=r.n;cout<<"执行复制构造函数"<<endl;} ~A(){cout<<"析构函数调用"<<endl;} void get() const {cout<<n<<endl;} void set(int x){n=x;} operator int(){return n;} private: int n; }; int main() { A a(100); cout<<"调用get函数得到a:"; a.get(); cout<<"int(a):"<<int(a)<<endl; cout<<"(a):"<<(a)<<endl; cout<<"a:"<<a<<endl; return 0; }
输出结果:
分析:
注意定义的operator int()函数虽然没有定义返回值,但它却返回了成员变量n的值,同时可以看到,在21到23行定义了三种调用类型转换函数的方法。
operator转换类型函数的作用:把一个对象转换为int型变量;
比较构造函数的转换作用:把一个变量的值转换为一个对象;
相关文章推荐
- C++ 转换类型运算符 通过operator关键字进行转换
- C++学习笔记,显示类型强制转换,关键字static_cast
- C++ 学习笔记(4)表达式、运算符、类型转换(static_cast、const_cast、reinterpret_cast、dynamic_cast)
- C++学习笔记十七 - 简单的类型强制转换
- C++ Primer 学习笔记_64_满载操作符与转换 -转换与类类型【下】
- 【C++学习笔记】类型转换和跳转语句
- c++学习笔记--显示类型转换
- C++学习笔记之——显示类型转换(static_cast,const_cast,interpret_cast,dynamic_cast)
- C++学习笔记之显示类型转换
- C/C++学习笔记28:类型转换
- 【C++】学习笔记草稿版12(类对象的类型转换)
- C++基础的不能再基础的学习笔记——类型转换
- c++学习笔记——一种非法的类型转换
- c++学习笔记--类型转换运算符
- 【从C到C++学习笔记】内敛函数/内敛函数与带参数宏的区别/新的类型转换运算符
- C++中的类型转换学习笔记
- c++学习笔记:使用锋利的sstringstream完成类型转换
- 【C++学习笔记】07_类型转换
- C++学习笔记:类型转换dynamic)cast和reinterpret_cast
- Java学习笔记(二十一):类型转换和instanceof关键字