wq_601840968 发表于 2018-9-11 14:16:52

C++ 中 int(a) 与 (int) a的区别

(int)a是C风格的强制类型转换;
那么int(a)是C++风格强制类型转换还是调用的int的构造函数

liwey 发表于 2018-9-11 16:05:17

这个可能依赖实现吧。具体得看C++实现标准有没有规定。

zhonghua_li 发表于 2018-9-11 16:13:36

(int)是类型转换, int(a) 是调用 int类的构造函数,或者 调用了一个 int 函数。

takashiki 发表于 2018-9-11 16:45:10

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;
}

liwey 发表于 2018-9-11 17:08:03

takashiki 发表于 2018-9-11 16:45
int是C/C++的关键字,怎么可能作为函数名或者类名,作为操作符重载还是可以的。
C++风格的类型转换是类似这 ...

这个,真的能那么用的。懒得翻书了。有点类似java的包装器吧。
页: [1]
查看完整版本: C++ 中 int(a) 与 (int) a的区别