首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  C++

C++小问题

  •  
  •   zhouzhou113 · 26 天前 · 1114 次点击

    请教两个小问题:

    1.规范的代码里面是不可以直接 double a = 0 ;这样写的吗? 应该写成 double a = 0.0 ;的吗? 是出于直接等于 0 会默认为 int 类型造成不必要的类型转换开销的原因吗?

    2.类的私有成员变量是不是不应该在类的声明里面初始化 而应该统一放在构造函数里面初始化??

    7 回复  |  直到 2019-11-19 11:07:10 +08:00
        1
    wevsty   26 天前   ♥ 1
    1、这个转换是编译器就可以确定的,所以实际上是 0 运行开销。
    2、一般类的成员变量都应该在构造函数的初始化列表里进行初始化,和是不是私有成员没有直接的关系。
        2
    Raymon111111   26 天前
    1 这种问题基本不用考虑

    现代语言编译器是相当厉害的
        3
    owt5008137   26 天前 via Android
    1. 只是防御性编程地提示一下。以防万一你是想要 int 结果手抖敲成了 double
    2. 只有比较高版本的编译器和 c++标准才支持申明初始化。很多环境里是还没使用支持这些新特性的编译器版本的
        4
    wutiantong   26 天前
    1. 还这样写: double a{};
    2. 没这种说法,但要注意正确的使用场景。
        5
    se77en   25 天前
    赞同 4 楼
        6
    nightwitch   25 天前   ♥ 1
    1. 即使发生了这种开销也可以忽略不计,pod 类型的转换非常快。double a = 0 这种写法,可能有的 Lint 会警告你代码不规范。

    2. 能放到 cpp 里面的代码最好放到 cpp 里面去,在类的声明里改动代码的话,所有包含这个类头文件的代码都要重新编译。
        7
    canyue7897   18 天前
    1.这种有的编译器会有 warning,但是实际使用没啥毛病。
    2.风格比较飘逸,用的时候再初始化。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2211 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 04:37 · PVG 12:37 · LAX 20:37 · JFK 23:37
    ♥ Do have faith in what you're doing.