相关疑难解决方法(0)

在C++中绑定对尚未构造的对象的引用是否安全?

考虑以下代码示例:

class Base {
public:
    Base( string& _object ) : object( _object ) {}
private:
    string& object;
};

class Derived: public Base {
public:
    Derived() : Base( object ) {}
private:
   string object;
};
Run Code Online (Sandbox Code Playgroud)

显然首先Base构造并传递对尚未构造的对象的引用.

内存是为整个Derived对象分配的,因此Derived::object在合法可访问的内存中,只是它的构造函数没有运行.Base::Base()不调用任何传递对象的方法,只存储引用.它适用于Visual C++ 9.

根据C++标准,它是否安全?

c++ reference visual-c++

20
推荐指数
1
解决办法
275
查看次数

将类成员传递给基类构造函数(通过引用)

给出以下类ConcreteBar实现BarIfc:

class Base {

public:

    Base(BarIfc& bar) : _bar(bar) { }

    void foo() {
        _bar.bar();
    }

private:

    Base(const Base& other);
    Base& operator=(const Base& other);

    BarIfc& _bar; // Pure virtual interface
};

class Child : public Base {

public:
    // bar is passed to base class before initialization
    Child(int i) : Base(_bar), _bar(i) { 
    }

private:

    Child(const Child& other);
    Child& operator=(const Child& other);

    ConcreteBar _bar;
};
Run Code Online (Sandbox Code Playgroud)

我是否正确地假设这一点

Child(int i) : Base(_bar), _bar(i) {}
Run Code Online (Sandbox Code Playgroud)

只要我不在_bar基类的初始化列表中使用(例如调用方法)引用,它就是"有效"的C++ ?

c++

9
推荐指数
2
解决办法
3116
查看次数

标签 统计

c++ ×2

reference ×1

visual-c++ ×1