C++ 四种类型转换详解
在 C++ 中,类型转换是连接不同数据类型的桥梁。相比 C 语言,C++ 引入了更严格的显式转换机制,旨在提高代码的安全性和可读性。本文将深入解析 C 语言中的转换陷阱以及 C++ 的四种标准类型转换运算符。
一、C 语言中的类型转换
在 C 语言中,当赋值运算符两侧、形参与实参、或返回值与接收类型不匹配时,会自动发生类型转换。主要分为隐式转换和显式强制转换。
1. 隐式类型转换
隐式转换由编译器自动完成,通常发生在兼容类型之间(如 int 转 double)。对于单参数构造函数,C++ 也支持隐式构造对象的转换。
#include <iostream>
using namespace std;
class A {
public:
A(int a) : _a(a) {}
private:
int _a;
};
class B {
public:
B(int b, int c) : _b(b), _c(c) {}
private:
int _b;
int _c;
};
int main() {
// 基本类型隐式转换
int a = 0;
double b = a;
// 单参数构造函数隐式转换
A aa = 1;
// C++11 初始化列表支持多参数隐式转换
B bb = {2, 3};
return 0;
}
若不希望发生隐式转换,可使用 explicit 关键字修饰构造函数。
#include <iostream>
using namespace std;
class A {
:
}
:
_a;
};
{
a = ;
b = a;
;
}


