首页 > 其他分享 >类型转换运算符

类型转换运算符

时间:2024-08-01 23:39:09浏览次数:19  
标签:类型转换 std int 运算符 Student id

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结果类型相同
  • 类类型转换函数不能调用。而是通过=直接使用。

标签:类型转换,std,int,运算符,Student,id
From: https://www.cnblogs.com/beasts777/p/18337806

相关文章

  • C语言运算符深度解析--超详细
    引言在C语言的浩瀚宇宙中,运算符如同点亮星辰的魔法棒,它们不仅连接着数据的海洋,更驱动着程序的逻辑流转。从基础的算术运算到复杂的位操作,每一个运算符都承载着特定的功能,是构建程序逻辑的基石。掌握C语言的运算符,就如同手握开启编程世界大门的钥匙,让你能够自如地编写出高效、精准......
  • Kotlin 运算符详解:算术、赋值、比较与逻辑运算符全解析
    Kotlin运算符运算符用于对变量和值执行操作。值称为操作数,而操作符定义了要在两个操作数之间执行的操作:操作数运算符操作数100+50在下面的示例中,数字100和50是操作数,+号是运算符:示例varx=100+50虽然+运算符通常用于将两个值相加,如上例所示,但它也可以用......
  • 运算符
    运算符目录运算符运算符类型i++与++i的区别&与&&的区别|与||的区别>与>>的区别运算符类型算术运算符:用于基本的数学运算。加(+)减(-)乘(*)除(/)模(%):求余数自增(++):变量值加一自减(--):变量值减一关系运算符:用于比较两个值,并根据比较结果返回布尔值true或false。大于(>)小于(<......
  • C++11 中的 python 海象运算符 (:=) 等效吗?
    最近我在Python中经常使用:=运算符,这样:ifmy_object:=SomeClass.function_that_returns_object():#dosomethingwiththisobjectifitexistsprint(my_object.some_attribute)问题有没有办法在c++11中做到这一点而不使用stdlib?例如......
  • C++程序中的类型转换与进程异常退出血案复盘
    在C++编程中,类型转换是一个常见的操作,它允许程序员将一个数据类型转换为另一个数据类型。然而,不恰当的类型转换可能会导致未定义的行为,甚至引发进程异常退出。本文将深入分析一段C++代码,探讨其中由于类型转换不当导致的潜在问题,并解释为何这种类型转换可能引发进程异常退出......
  • Java中的运算符
    运算符目录运算符运算符的分类算术运算符关系运算符位运算符逻辑运算符短路逻辑运算符赋值运算符条件运算符(?:)instanceof运算符Java运算符优先级运算符的分类计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运......
  • 《NET CLR via C#》---第四章(System.Object,类型转换,is和as,命名空间和程序集,运行时的相
    System.ObjectCLR要求每个类型最终都从System.Object类型派生。由于所有类型最终都从System.Object派生,所以每个类型的每个对象都保证了一组最基本的方法。公共方法说明Equals如果两个对象具有相同的值,就返回trueGetHashCode返回对象的值的哈希码。如果某个类型的......
  • C语言----变量与强制类型转换(5)
    目录1.变量1.1变量的创建1.2变量的分类 1.3变量的存储2.强制类型转换1.变量1.1变量的创建前面我们已经了解了数据类型,我们使用类型做什么呢?类型是用来创建变量的那么什么是变量呢?C语言中把经常变化的值称为变量,不变的值称为常量。变量创建的语法形式是这样的......
  • 核心(Hutool-core)类型转换Convert类
    Java常见类型转换转换为字符串:inta=1;//aStr为"1"StringaStr=Convert.toStr(a);long[]b={1,2,3,4,5};//bStr为:"[1,2,3,4,5]"StringbStr=Convert.toStr(b);转换为指定类型数组:String[]b={"1","2","3","4&q......
  • numpy 数字输出周围有类型转换,这是我的程序中的一个错误
    我使用四元数函数将python元组转换为numpy数组,然后将返回的numpy数组转换回元组。这里,start_pos是一个元组(0,0,0)第二个元组进入列表。current_pos=np.array(start_pos)current_quaternion=Quaternion.from_axis_angle(np.array([0,0,1]),math.......