2017-02-03 18 views
0

Могу ли я построить ссылку на параметр const внутри вызова метода? Я знаю, что он компилируется, но я не совсем уверен, что он корректен во время выполнения.Построение объектов при их передаче в качестве ссылки на константу C++

У меня есть следующие классы:

class A{ 
public: 
void doThings(const B& b); 
} 

class B{ 
    B(int i, int j); 

} 


int main{ 

    A a; 

    a.doThings(B(1,2)); //Is this OK? 

} 
+1

Что вы ожидаете от неправильного? –

+0

Ваш код определенно не компилируется. –

+1

Да, вы можете использовать ссылку const для временного объекта внутри метода/функции, но вы не можете сохранить указатель на него или использовать его в другом потоке, а компилятор не защитит вас от него. – gabry

ответ

2

понятие нормально ... временный B будет построен и передается по ссылке. Не храните эту ссылку в A или используйте в любом месте за пределами doThings.

Но ваш код не годится. Здесь я исправил его для вас:

class B; 

class A { 
public: 
    void doThings(const B& b) {} 
}; 

class B { 
public: 
    B(int i, int j) {} 
}; 


int main() { 

    A a; 

    a.doThings(B(1, 2)); //Is this OK? 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^