类型转换运算符

1. 作用

类通过自定义的类型转换运算符,可以将一个类型转换成另一个类型。例如将自定义的Student类转换成std::string类。

虽然在格式上和运算符重载类似,但运算符重载是一个成员函数,而类型转换运算符不是,因为没有返回值。

2. 格式

operator type() [const];
  • type:表示转化后的数据类型。例如intstd::string
  • cosnt:可有可无,加了表示禁止在该函数内修改类成员变量。

3. 实例

  • 实现:

    class Student {
    private:
        int m_id;
    public:
        Student();
        Student(int id);
        // 类型转换运算符
        operator std::string();
    };
    
    Student::Student(int id): m_id(id){}
    
    Student::operator std::string(){
        return std::to_string(this->m_id);
    }
    
  • 测试:

    int main(int argc, char *argv[]){
        Student s = 123;
        std::string str = s;
        std::cout << str << std::endl;
        return 0;
    }
    
  • 输出:

    123
    

类型转换成功

4. 注意事项

  • 不允许转换成数组或者函数类型,但允许转换为指针(包括数组指针以及函数指针)或者引用类型
  • 类型转换运算符没有显式的返回类型,也没有形参
  • 必须定义成类的成员函数
  • 类型转换函数通常应该为const类型,不是const类型也行。
  • 并且转换的类型要与return结果类型相同
  • 类类型转换函数不能调用。而是通过=直接使用。
posted @ 2024-08-01 23:39  BinaryPrinter  阅读(8)  评论(0编辑  收藏  举报