C临时变量在启动列表中
发布时间:2020-12-16 05:28:14 所属栏目:百科 来源:网络整理
导读:在C中,在初始化列表中是否有临时变量.我想初始化两个具有相同实例的常量成员,而不必传递某些东西,删除const要求,使用Factory(即传递它,但让工厂生成它来将其从API用户隐藏起来),或者有temp实际上是一个成员变量. 即就像是 Class Baz{ const Foo f; const Bar
在C中,在初始化列表中是否有临时变量.我想初始化两个具有相同实例的常量成员,而不必传递某些东西,删除const要求,使用Factory(即传递它,但让工厂生成它来将其从API用户隐藏起来),或者有temp实际上是一个成员变量.
即就像是 Class Baz{ const Foo f; const Bar b; Baz(Paramaters p):temp(p),f(p,temp),b(p,temp){ //temp is an instance of Something // But NOT A member of Baz // Whatever } } 代替 Class Baz{ Foo f; Bar b; Baz(Paramaters p){ Something temp(p); f = Foo(p,temp) b = Bar(p,temp) } } 要么 Class Baz{ Foo f; Bar b; Baz(Paramaters p,Something s):f(p,s),s){ } } 解决方法
在C 11中,您可以使用委托构造函数:
class Baz{ const Foo f; const Bar b; Baz(Paramaters p) : Baz(p,temp(p)) { } // Delegates to a private constructor // that also accepts a Something private: Baz(Paramaters p,Something const& temp): f(p,temp) { // Whatever } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |