• c++ operator 类型转换函数


    operator 的一个用途是用于类型转换函数

    类型转换函数的特征:

    1  类型转换函数定义在源类中; 
    2
      须由 operator 修饰,函数名称是目标类型名或目标类名; 
    3
      函数没有参数,没有返回值,但是有return语句,在return语句中返回目标类型数据或调用目标类的构造函数。

    类型转换函数主要有两类:

    1  对象向基本数据类型转换:

    2)   对象向不同类的对象的转换:

    简单的例子

    #include <iostream>
    
    using namespace std;
    class CArea
    {
           float area;
    public:
           CArea()
           {
                  area=0;
           }
           CArea(float a)           //重载含有一个参数的构造函数
           {
                  cout << "CArea(float a) " << endl; 
                  area=a;
           }
           void getArea()
           {
                  cout<<area<<endl;
           }
           void setArea(float a)
           {
                  area=a;
           }
           operator float()            //类型转换函数
           {                               
                  //将面积类对象转换为float型数据
                  return area;
           }
    };
    
    class CCircle
    {
           float R;
    public:
           void getR()
           {
                  cout<<R<<endl;
           }
           void setR(float r)
           {
                  R=r;
           }
           operator CArea()   //类型转换函数
           {                  //将圆类对象转为面积类对象
                  cout << "operator CArea()" << endl;
                  float area=3.1415926*R*R;
                  return (CArea(area));
           }    
    };
    void main()
    {
           CCircle cir;
           CArea are;
           float a;
           cir.setR(5);
           cir.getR();              //打印圆的半径
           are.getArea();           //打印转换前的面积                   
         
    
           cout << endl;
           CArea are1 = cir;                 //将圆类对象转为面积类对象
           CArea are2 = cir.operator CArea();
           CArea are3 = CArea(cir);    //最终编译为  are = cir.operator CArea();  
           CArea are4 = (CArea)cir;    //最终编译为  are = cir.operator CArea();   
    
           cout << endl;
           are.getArea();           //打印转换后的面积    
           a=are;                   //将面积类对象转换为float型数据
           cout<<a<<endl;                    
    }
  • 相关阅读:
    sharepoint具体错误提示
    体验魅力Cognos BI 10 系列,第1 部分: 第一次安装
    Moss、SharePoint数据库迁移问题(转)
    XML解析
    JDBC进阶
    JDBC的操作
    项目Contact开发中遇到的,引以为戒
    递归练习
    递归详解(四)
    递归详解(三)
  • 原文地址:https://www.cnblogs.com/zzj2/p/3012166.html
Copyright © 2020-2023  润新知