C++中未初始化的引用成员

Yod*_*oda 4 c++ constructor

我用C++编写了类,我希望它有一个字段,Osoba&但是我得到一个奇怪的错误:

class Rachunek{
public:
    Osoba& wlasciciel;
    double stan_konta;
    Rachunek(Osoba* wlasciciel, double stan_konta){ //Uninitialized reference member
        this->wlasciciel = wlasciciel;
        this->stan_konta = stan_konta;

    }
};
Run Code Online (Sandbox Code Playgroud)

Cod*_*wer 10

像这样使用初始化列表:(最佳方法)

class Rachunek{
public:
    Osoba& wlasciciel;
    double stan_konta;
    Rachunek(Osoba* wlasciciel, double stan_konta): 
        wlasciciel(*wlasciciel) , 
        stan_konta(stan_konta)  { //Uninitialized reference member


    }
};
Run Code Online (Sandbox Code Playgroud)

您有作为成员的引用,并且必须立即初始化引用.此表示法允许在声明时进行初始化.如果您使用普通成员而没有&它会像你那样正常工作.虽然这里呈现的风格更有效.

另外:(效率较低的方法)

class Rachunek{
public:
    Osoba wlasciciel; // Note missing & on the type. 
    double stan_konta;
    Rachunek(Osoba* wlasciciel, double stan_konta)
    {
        this->wlasciciel = *wlasciciel;  
        this->stan_konta = stan_konta;  

    }
};
Run Code Online (Sandbox Code Playgroud)