C++小问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhouzhou113
V2EX    C++

C++小问题

  •  
  •   zhouzhou113 2019-11-10 22:58:52 +08:00 3759 次点击
    这是一个创建于 2211 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教两个小问题:

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

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

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

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

    2. 能放到 cpp 里面的代码最好放到 cp 里面去,在类的声明里改动代码的话,所有包含这个类头文件的代码都要重新编译。
    canyue7897
        7
    canyue7897  
       2019-11-19 11:07:10 +08:00
    1.这种有的编译器会有 warning,但是实际使用没啥毛病。
    2.风格比较飘逸,用的时候再初始化。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2554 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 04:01 PVG 12:01 LAX 20:01 JFK 23:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86