1樓:
1.一般資料成員(變數)在類內定義,在建構函式中初始化,對是否使用初始化列表無要求;
class a
;//初始化列表初始化普通資料成員
private:
int x;
int y;
};或者
class a
;a::a(int a, int b)
2.const資料成員在類內定義,在建構函式中初始化,且只能在建構函式的初始化列表中初始化,如下所示:
class a
;//初始化列表初始化const資料成員
private:
const int num;
int x;
};3.static資料成員在類內宣告,類外定義和初始化,類外定義時省略關鍵字static,如下所示:
class a
;int a::num = 5;//類外定義、初始化,且省略關鍵字static
2樓:匿名使用者
在類a中只能做變數宣告,無法定義。
int add=0;
是錯誤的,只能寫成
int add;
而在類外部只能對static靜態變數進行定義,比如在類a中宣告瞭static int add;
則可以在類外部定義
int a::add=0;
此時會對變數add進行分配記憶體、初始化等操作。
對於a的普通成員變數,只能在a的函式內進行操作。
一個綜合的例子如下:
class a
;int a::add2 =0;
void a::fun()
3樓:烏紅英
不可以的,只能是單個的整形變數。而且,老的編譯器不允許任何在類宣告中的初始化。新的標準也建議放到類的外面初始化。
給個簡單的例子:
[18:43:46@~/c-cpp]$ cat a.cpp#include
class a ;
int a::i = 3;
int main()
[18:44:28@~/c-cpp]$ g++ -wall a.cpp
[18:44:33@~/c-cpp]$
c++ class a {private int x ;public a(int i =0):x(0) {} a(int i =0):x(i)
4樓:慕容瑩華汪菲
a a(1);輸出1,這個沒什麼解釋的,主要是看為什麼b b(2,3);會輸出203。
b(int i,int j):a(i)這一句用i初始化基類a,輸出2;
b的資料成員a沒有顯式初始化,用預設的a(int i=0)初始化a,輸出0;
cout<
using namespace std;
class a
};class b: public a
};int main()
5樓:匿名使用者
a a(1)輸出1
b b(2,3)執行b的建構函式
第一步執行public b(int i ,int j):a(i)中的a(i)(先執行父類的建構函式)輸出2
再生成b的成員變數private: a a;輸出0再執行cout<
6樓:匿名使用者
怎麼可以有兩個引數一樣的建構函式a(int),會報錯的吧
c++中以一個類b作為另一個類a的成員變數時的問題
7樓:匿名使用者
class b
;bai// class b只有一個帶引數du的構造zhi函dao數private:
int m_i;};
class a;
b m_b;};
8樓:匿名使用者
class b
; // class b只有一個帶引數的建構函式private:
int m_i;
};class a
;b m_b;};
9樓:匿名使用者
一個類不能作為另一類的成員,只能將一個類的物件作為另一個類的成員。只能先定義類b,然後再定義類a,類a中將類b的一個物件變數作為其成員。
C 中類怎樣定義,使用,C 中如果要用的類定義在使用之後,該怎樣宣告?
類的定義格式一般地分為說明部分和實現部分。說明部分是用來說明該類中的成員,包含資料成員的說明和成員函式的說明。成員函式是用來對資料成員進行操作的,又稱為 方法 實現部分是用來對成員函式的定義。概括說來,說明部分將告訴使用者 幹什麼 而實現部分是告訴使用者 怎麼幹 類的一般定義格式如下 class 類...
在80C51系統中,外部程式儲存器公用16位地址和8位資料匯流排,為什麼不會衝突
一個機器週期裡面有12個時鐘週期,其中就分時傳送地址和資料,w和 r的使能就是幹這個事的。以前我也沒想明白這個問題。好像p0在做外部儲存器的資料和地址線的同時還可以做普通的io用,關鍵就是注意使能的時機 非常急啊啊啊啊 微控制器四組i o口及其作用 p0可以作普通io口,也可以在讀寫外部儲存器作低8...
在C中類的構造器,與類中的方法是如何區分的
兩位肯定是理解了,但是卻說錯了。另外,樓主說 構造器 我不知道你這說法 看來的,構造方法 建構函式的英文是constructor,如果你直譯,那確實是。而構造器,更多是見於一些設計模式中。如何區分取決於誰來區分。對面對 的程式設計師來說,構造方法不是 沒有型別修飾符 也更不是 沒有修飾符 1.構造方...