C临时变量在启动列表中

前端之家收集整理的这篇文章主要介绍了C临时变量在启动列表中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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
    }
};
原文链接:https://www.f2er.com/c/114686.html

猜你在找的C&C++相关文章