读书感悟,关于C++的初始化列表的疑问
C++的初始化列表相对于构造函数内赋值有效率优势,但仅限于类对象,对于内置类型没什么区别(梳理原话称之为“行为良好”),具体的在“深入详解C++对象模型中”有深入解释。
我个人不喜欢初始化列表的语法,而且最不解的就是“仅限于类对象,对于内置类型没什么区别”这一点,我感觉对于类来说,最有初始化价值的就是内置类型,而类成员对象,在构造的时候本身就会自动调用他本身构造函数啊,感觉没有初始化的绝对必要啊,这一点是不是C++引入的又一个比较蛋疼的复杂性呢?
确实这种方式能够增加灵活度,比如你可以在初始化列表中调用非默认的构造函数并赋任意值,但是C#和java里印象中没这东西吧,而且C++还把这里弄得像个陷阱似的——类对象如果在构造函数中初始化,效率会降低。
MFC里会给CString的控件关联变量自动加上初始化列表,我就直接会删掉,因为CString根本不需要初始化……而且初始化列表和静态类型还不兼容,有时候多线程调用还麻烦(当然,我避免静态数据,一般用传入this到线程的方法)。