
请教两个小问题:
1.规范的代码里面是不可以直接 double a = 0 ;这样写的吗? 应该写成 double a = 0.0 ;的吗? 是出于直接等于 0 会默认为 int 类型造成不必要的类型转换开销的原因吗?
2.类的私有成员变量是不是不应该在类的声明里面初始化 而应该统一放在构造函数里面初始化??
1 wevsty 2019-11-10 23:20:15 +08:00 1、这个转换是编译器就可以确定的,所以实际上是 0 运行开销。 2、一般类的成员变量都应该在构造函数的初始化列表里进行初始化,和是不是私有成员没有直接的关系。 |
2 Raymon111111 2019-11-11 00:09:31 +08:00 1 这种问题基本不用考虑 现代语言编译器是相当厉害的 |
3 owt5008137 2019-11-11 10:21:40 +08:00 via Android 1. 只是防御性编程地提示一下。以防万一你是想要 int 结果手抖敲成了 double 2. 只有比较高版本的编译器和 c++标准才支持申明初始化。很多环境里是还没使用支持这些新特性的编译器版本的 |
4 wutiantong 2019-11-11 11:00:25 +08:00 1. 还这样写: double a{}; 2. 没这种说法,但要注意正确的使用场景。 |
5 se77en 2019-11-11 14:58:27 +08:00 赞同 4 楼 |
6 nightwitch 2019-11-11 15:16:36 +08:00 1. 即使发生了这种开销也可以忽略不计,pod 类型的转换非常快。double a = 0 这种写法,可能有的 Lint 会警告你代码不规范。 2. 能放到 cpp 里面的代码最好放到 cp 里面去,在类的声明里改动代码的话,所有包含这个类头文件的代码都要重新编译。 |
7 canyue7897 2019-11-19 11:07:10 +08:00 1.这种有的编译器会有 warning,但是实际使用没啥毛病。 2.风格比较飘逸,用的时候再初始化。 |