c++类型转换函数
一.opertor:本类类型--->其他类型(内置类型或其他类类型)
c++中opertor可以将类类型转换为内置类型或其他类型,但反之不行
operator 类型名( )
{
实现转换的语句:return 目标类型对象
}
1 class a 2 { 3 int aa; 4 double bb; 5 public: 6 a(int _a,int _b) :aa(_a),bb(_b){} 7 operator int(){ return aa; } //无返回值类型,无参数,返回目标类型的对象 8 }; 9 void main() 10 { 11 a a(1,2.0); 12 int b = a; //a---->int 13 cout << b << endl; 14 }
二.转换构造函数:其他类型--->本类类型
通过转换构造函数可以将其他类型数据转换成本类类型,是一种隐式转换,只包含一个参数,若想拒绝此种转换,可在转换构造函数前加explict修饰
注意:转换构造函数只能有一个参数。如果有多个参数,就不是转换构造函数。(当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数。)
1 class a 2 { 3 int aa; 4 double bb; 5 public: 6 a(){}; 7 a(int _a,double _b) :aa(_a),bb(_b){} 8 a(double _b):bb(_b){ aa = 0; } //转换构造函数 9 operator int(){ return aa; } //无返回值类型,无参数,返回目标类型的对象 10 void output(){ cout << aa << "," << bb << endl; } 11 }; 12 void main() 13 { 14 double b = 3.1; 15 a a = b; //double-->a 16 a.output(); 17 }