1樓:公尺果的媽媽
引用引入了物件的乙個同義詞。定義引用的表示方法與定義指標相似,只是用&代替了*。引用(reference)是c++對c語言的重要擴充。
引用就是某一變數(目標)的乙個別名,對引用的操作與對變數直接操作完全一樣。引用的宣告方法:型別識別符號 &引用名=目標變數名;
引用說明:
(1)&在此不是求位址運算,而是起標識作用。
(2)型別識別符號是指目標變數的型別。
(3)宣告引用時,必須同時對其進行初始化。
(4)引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。
int a=2,int &ra=a;
a為目標原名稱,ra為目標引用名。給ra賦值:ra=1; 等價於 a=1;
(5)對引用求位址,就是對目標變數求位址。&ra與&a相等。即我們常說引用名是目標變數名的乙個別名。
別名一詞好像是說引用不佔據任何記憶體空間。但是編譯器在一般將其實現為const指標,即指向位置不可變的指標。即引用實際上與一般指標同樣占用記憶體。
(6)不能建立引用的陣列。因為陣列是乙個由若干個元素所組成的集合,所以無法建立乙個由引用組成的集合。但是可以建立陣列的引用.
例如: int& ref [3]= ;//宣告ref引用的陣列錯誤
但是可以這樣寫:
const int (&ref)[3] =; //gcc編譯的時候加上選項 -std=c++0x
ref[0] = 35; //錯誤
為什麼要加上const ,因為此時是個字面值陣列,是儲存在**段裡,唯讀的屬性,如果不加,編譯錯誤,而且後面對ref[0]的賦值也不會成功.
需要特別強調的是引用並不產生物件的副本,僅僅是物件的同義詞。因此,當下面的語句執行後:
pt1.offset(12,12);
pt1和pt2都具有(12,12)的值。
引用必須在定義時馬上被初始化,因為它必須是某個東西的同義詞。你不能先定義乙個引用後才
初始化它。例如下面語句是非法的:
point &pt3;
pt3=pt1;
那麼既然引用只是某個東西的同義詞,它有什麼用途呢?
下面討論引用的兩個主要用途:作為函式引數以及從函式中返回左值。
2樓:野林古風
這行**的意思是:建立乙個名叫topval的函式,該函式返回值是乙個const型別的stock的物件,引用的引數也是const 的,並且該函式 也是const 型別的,在程式執行過程中任何對返回值,或引數作出修改都不會通過。
這個主要是讓你了解const的用法,如果乙個引數被標定為const 則任何函式對他的修改都會引起乙個編譯錯誤
const 物件只能通過const 的函式訪問;
你看deitel的教程,對類似這個函式的用法有詳細的解釋
3樓:匿名使用者
& 的語法意義根據位置的不同而有差別
在函式原型宣告裡面 & 是指這個變數是引用傳遞的在變數宣告裡面 & 的意思是宣告乙個別名
在其它語句裡面 & 的意思是取位址
這裡是第一種情況, 就是指引用傳遞, 也沒更多可解釋的, 關鍵是不要跟其他的搞混了
4樓:匿名使用者
這本書的255頁有關於這個的講解
c++,在類中定義乙個資料成員 類名 &x 這樣的引用,是不是x代表這個類建立的物件的引用
5樓:匿名使用者
自己對自己的引用?這樣的類恐怕不能定義出來
6樓:匿名使用者
可以的,這其實就是變數作用域的範疇。b中定義區域性變數c,這時候直接使用c就是本地新定義的c,如果要用類的成員變數c要加作用域。
c++如何在乙個類中引用另乙個類的變數
7樓:匿名使用者
在第二個類中例項化第乙個類,在通過例項化後的類的函式(一般是get之類的函式)來引用!
看看這個方法行不行~
8樓:
如果是兩個孤立的類,最好不要這麼做,乙個類需要用到的資料,最好是從另外乙個類公開的介面來獲取。直接引用另外乙個類的變數,會破壞資料的封裝性,會有麻煩的。
如果是派生類要引用基類的資料,只要資料不是私有,直接引用就可以。
9樓:匿名使用者
可能你理解上有問題。
不太明白你的意思,所以我分開解釋。
如果是在定義的時候就引用,下面兩種。
1.兩個都是類,即類的靜態變數(static修飾),乙個類自然可以引用靜態變數,因為靜態變數是在程式進入main函式前就已經初始化完了。
2.乙個類a乙個例項b(a類產生的物件),a當然無法在類的內部引用(即定義中),因為例項是在程式中動態分配的記憶體,類a必然先於例項b存在,所以a並不能知道b的存在。b可以引用類a的靜態變數,理由同1。
如果是在執行時才引用。
你只要在類a裡寫乙個函式,例如function(b b),這樣你要呼叫的時候通過這個函式做介面就行了,至於b你要做什麼,就是你的事了。
10樓:
乙個類中定義乙個指向另乙個類的變數的指標不行嗎?
11樓:du瓶邪
可以這樣做:
class a
;class b;};
c++怎麼才能在乙個類裡面新增另乙個類的引用,使得可以從類a的例項a.b得到類b的例項?
12樓:匿名使用者
引用在定義時就必須要初始化,對於類的引用成員,只能在初始化列表裡面初始化引用成員。
但是在a類中定義對b類物件的引用似乎不是什麼好的方式,因為如果b類物件的生命週期比a類物件要短的話,那麼b類物件中的引用成員就失效了,有點類似於野指標的效果。
比如class a
;class b
//這裡lkjhggv的定義有乙個問題,不能用const a& 來初始化非const的引用成員
};a * pa = new a;
b b(*pa);
delete pa; //後面b.ref_a已經失效
c語言中,這種需求實際上是通過指標現實的,c++中這樣的需求最完美的解決方案還是智慧型指標,比如stl的 std::shared_ptr
13樓:匿名使用者
定義引用成員,不過在構造時,必須初始化引用成員
C 如何在類中引用另類的變數,C 如何在一個類中引用另一個類的變數
在第二個類中例項化第一個類,在通過例項化後的類的函式 一般是get之類的函式 來引用!看看這個方法行不行 如果是兩個孤立的類,最好不要這麼做,一個類需要用到的資料,最好是從另外一個類公開的介面來獲取。直接引用另外一個類的變數,會破壞資料的封裝性,會有麻煩的。如果是派生類要引用基類的資料,只要資料不是...
C 中的“類”是什麼意思,c 中的類和類的物件是什麼意思
光棍誓言 類就是就是有類似屬性的集合。舉個例子。就像是學生類是吧。這個類就可以定義許多有一定屬性的學生。就像身高,體重什麼的。因為這都是學生的屬性。不過0基礎的話,還是先學c,學會結構體。接著學c 過渡到類。真的,零基礎直接殺c 是吃力的。 令狐蛋蛋 相當於一個集合,型別。這個集體有共同的特徵,比如...
C 未將物件引用設定到物件的例項。
正確的寫法是 string connectionstring membership connectionstring sqlconnection con new sqlconnection connectionstring sqlcommand cmd new sqlcommand delete m...