龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C++:类型数据间的转换(2)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
2.3转换构造函数的使用 使用转换构造函数将一个指定的数据转换为类对象的方法: 【1】先声明一个类(如上面的Complex); 【2】在这个类中定义一个只有

  2.3转换构造函数的使用

  使用转换构造函数将一个指定的数据转换为类对象的方法:

  【1】先声明一个类(如上面的Complex);

  【2】在这个类中定义一个只有一个参数的构造函数,参数的类型是需要转换的类型,在函数体中指定转换的方法;

  【3】在该类的作用域内可以用以下形式进行类型转换,

  类名(指定类型的数据)

  2.4一个实例

  【1】提出问题

  下面给出一个复数类Complex,提供了2种构造函数。

class Complex{

 public:

  Complex(double r,double i){//用于初始化的构造函数

   real=r;

   imag=i;

  }

  Complex(double r){//转换构造函数

   real=r;

   imag=0;

  }

 private:

  double real,imag;

};

int main(){

 Complex c(0,0); //使用初始化构造函数

 c=c+2.5;error: no match for 'operator+' in 'c + 2.5e+0'

  这里报错,意思是+号运算符没有被重载以用于Complex类对象与double之间的操作。

  【2】使用重载加运算符的方式修复之

class Complex{

 public:

  Complex operator+(double);//声明重载运算符+

};

Complex Complex:: operator+(double r){

 return Complex(real+r,imag);

}

int main(){

 Complex c(0,0);

 c=c+2.5; //ok

精彩图集

赞助商链接