模板中不控制区分aggregates还是ctor? 这样模板有点危险吧?
反正我写代码aggregates一般都是 = {...},前面这个等号一加意思就非常清楚了。
【 在 ziqin (子青|会挽雕弓如满月|西北望|射天狼) 的大作中提到: 】
: 标 题: Re: 这个怎么理解?
: 发信站: 水木社区 (Tue Dec 14 09:47:24 2021), 站内
:
: 我个人觉得{}在很大程度上是给模板用的
:
: 基本上来说,如果人肉显式区别{}和(),那基本上{}是填充内存,初始化aggregates的。()基本上是把ctor当成一个builder函数。这个区别可能是在机器代码层面的,具体的我不清楚,可能初始化内存可以在编译时搞定,呼叫builder函数就是运行时?大概
:
: 但是一旦涉及模板,如果{}不能兼容()的话,那在模板中构造object的时候,还需要区分这个object到底是不是aggregates,然后再选择对应的{}或者(),那就很麻烦了,所以{}需要兼容()
:
: cpp很多新东西,如果放在模板和编译器优化上来看,就比较清楚了
:
: 【 在 here080 的大作中提到: 】
: : 没错。
: : int x = 3;
: : vector<int> = {1,2,3};
: : ...................
:
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 115.193.191.*]
--
FROM 73.15.185.*