Я пишу код и у меня есть вопрос о ссылках &:C++ ссылки и память и
class A{
private:
int num;
public:
void set(const int& a){num = a;}
void foo(){
int a = 4;
set(a);
}
void print(){
cout << num << endl;
}
};
int main(){
A a;
a.foo();
a.print();
return 0;
}
В этом случае переменная a
будет уничтожена в конце foo()
. set
возьмите ссылку, поэтому адрес a
и обновления num
. Следовательно, этот код неправильный (число указывает на удаленную память)? Или set
, устанавливает число с значение (а не адрес)?
Я редактировать код с cout
по адресу a
и num
и они разные, так что я думаю, что NUM копирует значение из a
. Если я запустил код, все вроде бы работает, но я не уверен.
'num = a;' берет копию, ничего особенного. _ "num указывает на удаленную память" _ no 'num' не указывает на память, это простая переменная-член класса. –
Копия значения a, а не адреса, не так ли? – linofex
_ «Копия значения a, а не адреса, правильно?» _ Конечно. –