程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ 定義引用型類成員變量

C++ 定義引用型類成員變量

編輯:C++入門知識

作者 : 卿笃軍


1)早在學習C語言的時候,我們就知道,在定義結構體的時候,不能在結構體中定義該結構體類型的變量:

struct node
{
	int a;
//	struct node b;      //錯
	struct node *next;  //對
};
因為,該結構體還在定義中....不知道結構體裡面具體有什麼內容,所以無法定義對象b。但是可以定義指針*next。


2)現在,C++裡面多出來了一個叫引用的東東(很強大):
引用就是某一變量(目標)的一個別名,對引用的操作與對變量直接操作完全一樣。引用的聲明方法:類型標識符 &引用名=目標變量名;

但是,需要注意幾點(特別是第3點):

(1)&在此不是求地址運算,而是起標識作用。
(2)類型標識符是指目標變量的類型。
(3)聲明引用時,必須同時對其進行初始化。
(4)引用聲明完畢後,相當於目標變量名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變量名的別名。
int a,&ra=a;
a為目標原名稱,ra為目標引用名。給ra賦值:ra=1; 等價於 a=1;
(5)對引用求地址,就是對目標變量求地址。&ra與&a相等。即我們常說引用名是目標變量名的一個別名。別名一詞好像是說引用不占據任何內存空間。但是編譯器在一般將其實現為const指針,即指向位置不可變的指針。即引用實際上與一般指針同樣占用內存。
(6)不能建立引用的數組。因為數組是一個由若干個元素所組成的集合,所以無法建立一個由引用組成的集合。但是可以建立數組的引用.


3)那麼,定義引用型類成員變量要注意些什麼呢?

第一步:在類B中定義一個引用型A類成員變量 A &m_a1;

第二步:在B類的構造函數中對其進行初始化。

注意:a.因為你使用了引用型成員變量,所以B類不能有空構造函數(代碼中已經將B(){}注釋起來了,不能出現它)。

b.在B類構造函數中初始化的時候,引用型成員變量必須在初始化列表中進行初始化,不能在函數體中進行初始化。

(就是,必須在" : "號後面初始化,不能在函數體 { } 裡面初始化)


4)另外,其它一些需要注意的事項,全部在下面的代碼注釋中進行了說明了。

示例:C++ 定義引用型類成員變量

#include 
using namespace std;

class A;     //前向引用聲明

class B
{
public:
//	B(){}                //不能有空構造函數
	B(A &a):m_a1(a) {}   //構造函數:同時給&m_a1引用初始化

	void bPrint1(A &a) { cout<<"B1"<
參考文獻:百度百科,C++引用,http://baike.baidu.com/view/2129184.htm,2014年5月24日

tzdjzs的CSDN博客專欄,C++ 類成員引用變量的使用,http://blog.csdn.net/tzdjzs/article/details/2768363,2014年5月24日


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved