在很多情况下,类的强转换运算符还可以作为类对象加运算重载函数使用,尽管他们的意义并不相同,下面的例子,就是利用转换运算符,将两个类对象转换成int后,相加并创建临时类对象,后再赋给另一个对象。
代码如下:
//例2 //程序作者:管宁 //站点:www.cndev-lab.com //所有稿件均有版权,如要转载,请务必著名出处和作者 #include <iostream> using namespace std; class Test { public: Test(int a = 0) { cout<<this<<":"<<"载入构造函数!"<<a<<endl; Test::a = a; } Test(Test &temp) { cout<<"载入拷贝构造函数!"<<endl; Test::a = temp.a; } ~Test() { cout<<this<<":"<<"载入析构函数!"<<this->a<<endl; cin.get(); } operator int() { cout<<this<<":"<<"载入转换运算符函数的内存地址:"<<this->a<<endl; return Test::a; } public: int a; }; int main() { Test a(100),b(100),c; cout<<"a的内存地址"<<&a<<" | b的内存地址"<<&b<<endl; c=Test((int)a+(int)b);//显示式转换 //c=a+b;//隐式转换 cout<<"c的内存地址"<<&c<<endl; cout<<c.a<<endl; system("pause"); }
代码中的c=a+b;属于隐式转换,它的实现过程与c=Test((int)a+(int)b);完全相同。
运行结果如下图示(注意观察内存地址,观察构造与析构过程,执行过程图中有解释):

|