Я вызываю метод foo
от const ref
:
// method, which is being called
void foo(const Entity & ent);
// call
Entity* e = new Entity;
foo(e); // wrong: missing * but compiles
Этот фрагмент кода не только компилируется, но и создает новый экземпляр Entity
со значениями по умолчанию в области действия foo
. Я ожидаю, что это не скомпилируется или, по крайней мере, вылетит.
Если я правильно наберу foo
(foo(*e)
), все работает, как подозревается, и я вижу правильные значения Entity
в foo
.
Я использую mingw, поставляемый с Qt 4.7.
Вот интерфейс Entity
:
class Entity : public QObject
{
Q_OBJECT
public:
Entity (QObject* parent = NULL);
long getId() const { return this->id; }
void setId(const long id) { this->id = id; }
QString getName() const { return this->name; }
void setName(const QString & name) {this->name = name; }
private:
QString name;
long id;
};