C++中的转换构造函数与类型转换运算符

隐式类型转换

C++的内置类型之间会进行隐式的类型转换

  • char、short、int、long四个类型混合运算时,较小的(占用字节数小)整数类型会被自动提升为较大的(占用字节数大)整数类型,以确保不会丢失精度
  • signed类型和unsigned类型混合运算的结果是unsigned类型
  • 整型(char、short、int、long)和浮点类型(float、double)混合运算时,会自动提升为浮点类型;较短的浮点数类型(如float)会被自动提升为更长的浮点数类型(如double)以进行混合运算,以确保不会丢失精度

自定义的类类型转换

C++提供转换构造函数、类型转换运算符函数这两种成员函数来支持类类型的类型转换

转换构造函数

将其他类型的对象转换为本类对象

特点

  • 属于构造函数的一种,没有返回值,函数名和类名一样
  • 只有一个形参,或其他形参都有默认值
  • 形参类型可以是内置类型,也可以是其他类类型
  • 可以使用关键字 explicit 限制隐式转换

使用

1
2
3
4
5
6
class MyClass {
public:
MyClass(int x) {
// 将 int 转换为 MyClass
}
};

类型转换运算符函数

将类对象转换为其他类型对象

特点

  • 函数原型没有返回值、没有参数
  • 函数名为关键字operator 类型(类型为要转换的类型)
  • 必须要有return语句,return的类型就是要转换为的类型
  • 转换为的类型可以是内置类型,也可以是其他类类型

使用

1
2
3
4
5
6
7
8
9
10
class MyClass {
int value;
public:
MyClass(int v) : value(v) {}

// 类型转换函数
operator int() const {
return value;
}
};

猫猫🐱



© 2025 子非鲲 使用 Stellar 创建
共发表 44 篇 Blog · 总计 109.6k 字