2016-04-13 30 views
1

hata bildirmiyor C++ primer 2.3.1 diyor ki: başlatıldıktan sonra, bir başvuru başlangıç ​​nesnesine bağlı kalır. Farklı bir nesneyi atıfta bulunmak için bir başvuruyu yeniden adlandırmanın bir yolu yoktur. Ama benim kod iyi çalışıyor: neden C++ başvurusunu yeniden ispat ettiğimde, derleyici

#include <iostream> 
int main() 
{ 
    int a = 1, b = 2; 
    int &r = a; 
    r = b; 
    std::cout << r << std::endl; 
    return 0; 
} 

koşu sonucudur: Sen rebind değil vermedi

+3

'r' birlikte' a' yazdırmayı deneyin. * Rebinding * yoktur, sadece referans ile "a" atarsınız. – Praetorian

+0

Bir referans yapıldıktan sonra, referansa atıfta bulunulan şey, her şekilde (neredeyse) eşanlamlı hale gelir. R = b demek, a = b ifadesinin aynısıdır. – xaxxon

cevap

6

. Bunun yerine, b değerini a'a atadınız.

kontrol önce ve o görevden sonra adreslerini yazdırarak bu kendin:

std::cout << "a: " << &a << std::endl; 
std::cout << "b: " << &b << std::endl; 
std::cout << "r: " << &r << std::endl; 
İlgili konular