C++ 中 int(a) 与 (int) a的区别
(int)a是C风格的强制类型转换;那么int(a)是C++风格强制类型转换还是调用的int的构造函数 这个可能依赖实现吧。具体得看C++实现标准有没有规定。 (int)是类型转换, int(a) 是调用 int类的构造函数,或者 调用了一个 int 函数。 int是C/C++的关键字,怎么可能作为函数名或者类名,作为操作符重载还是可以的。
C++风格的类型转换是类似这个样子的:int y = static_cast<int>(x); 这个大概也是个强制转换,只不过是个不伦不类的强转。
eg:class A {
public:
float x;
operator int () { // 操作符重载,重载了转换类型int
return (int)x;
}
};
int _tmain(int argc, _TCHAR* argv[]){
A a;
a.x = 10.897;
int i = int(a); // 要是去掉那个强制转换的操作符重载这里就无法编译了!
return 0;
} takashiki 发表于 2018-9-11 16:45
int是C/C++的关键字,怎么可能作为函数名或者类名,作为操作符重载还是可以的。
C++风格的类型转换是类似这 ...
这个,真的能那么用的。懒得翻书了。有点类似java的包装器吧。
页:
[1]