Передача ссылок конструктору C++ и сохранение их в ссылочные или нессылочные типы

Я хотел бы знать, действительно ли это одно и то же.

class ExampleClass {
    public:
        ExampleClass(Object& newObj) : obj(newObj) {}
    private:
        Object obj;
}

class ExampleClass2 {
    public:
        ExampleClass2(Object& newObj) : objReference(newObj) {}
    private:
        Object& objReference;
}

Значит, это не будет работать ни с одним из классов?

ExampleClass* getExampleObject() {
    Object obj;
    return new ExampleClass(obj);
}

ExampleClass2* getExample2Object() {
    Object obj;
    return new ExampleClass2(obj);
}

void main() {
    ExampleClass* ec = getExampleObject();
    ExampleClass2* ec2 = getExample2Object();
    //Do something involving the member objects of ec and ec2
}

Значит, объекты-члены недействительны после обоих методов getExampleObject? Разве конструктор ExampleClass не сохраняет копию объекта, на который ссылается его конструктор?

5
задан user1468729 20 June 2012 в 10:27
поделиться