作者d630200x (DOGE)
看板C_and_CPP
标题[问题] C++初始化为何常使用单冒号?
时间Mon Nov 23 13:18:07 2020
有看到有人说这样效率比较好
但我自己测试来看是看不出差异(可能是我测试方式太简单)
就我个人来说我是觉得写在函式里较为美观
但是很多网路上的无论是simple code还是教学,在初始化时是比较常看到单冒号的
请问是真的效率上差很多,还是单纯风格差异而已?
-----
Sent from JPTT on my Asus ASUS_I01WD.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.10.5.27 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1606108690.A.974.html
1F:推 nicknick0630: 一个好处是可以使用initializer list 11/23 14:06
2F:推 dendrobium: ref type只能初始化,class如果default ctor 做的事情 11/23 15:18
3F:→ dendrobium: 多的话也应该会有影响 11/23 15:18
4F:推 LPH66: : 後面是使用 (特定) ctor 初始化, 写在函式里则是初始化完 11/23 15:30
5F:→ LPH66: 之後再指定一个新东西过去, 语义上有些微的不同 11/23 15:31
6F:→ LPH66: (大约就类似 int x = 5; 跟 int x; x = 5; 的差别) 11/23 15:31
7F:→ LPH66: 那因为前者是直接初始化, 能用一些只在这里用的语法 11/23 15:32
8F:→ LPH66: 例如 1F 提的 initializer_list, 2F 提的 ref 初始化等 11/23 15:32
9F:→ protoss: 好像是因为初始化跟assign值是不一样的概念(阶段)?写在冒 11/24 00:11
10F:→ protoss: 号後头就在初始化阶段直接给值不需要再做assign... 11/24 00:12
11F:推 johnjohnlin: 用冒号初始化的先後顺序很常常被标准阴...... 11/24 02:30
12F:推 LPH66: 顺序的问题只要记得一定是宣告顺序就好 11/24 05:34
13F:→ LPH66: 我个人会习惯写这个冒号列表时就照宣告顺序写这样不会乱 11/24 05:35
14F:→ tinlans: 冒号後面 call constructor,大括号里面就是 assignment 11/24 07:31
15F:→ tinlans: 没写在冒号那边,就多 call 一次 default constructor 11/24 07:31
16F:→ tinlans: const data member 你也没办法在大括号里面才赋值 11/24 07:32
17F:→ Killercat: 主要是成员变数如果是const或者reference的话,这是 11/24 21:33
18F:→ Killercat: 唯一的初始化跟赋值手段 11/24 21:34