请教两个小问题:
1.规范的代码里面是不可以直接 double a = 0 ;这样写的吗? 应该写成 double a = 0.0 ;的吗? 是出于直接等于 0 会默认为 int 类型造成不必要的类型转换开销的原因吗?
2.类的私有成员变量是不是不应该在类的声明里面初始化 而应该统一放在构造函数里面初始化??
1
wevsty 2019-11-10 23:20:15 +08:00 1
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
1. 即使发生了这种开销也可以忽略不计,pod 类型的转换非常快。double a = 0 这种写法,可能有的 Lint 会警告你代码不规范。
2. 能放到 cpp 里面的代码最好放到 cpp 里面去,在类的声明里改动代码的话,所有包含这个类头文件的代码都要重新编译。 |
7
canyue7897 2019-11-19 11:07:10 +08:00
1.这种有的编译器会有 warning,但是实际使用没啥毛病。
2.风格比较飘逸,用的时候再初始化。 |