c中的結構體存在缺點:
1.函式中的任意賦值語句都可以訪問結構體中的成員,但在現實生活中並不是什麼資料都可以被隨意訪問的,因此c語言中的結構體的資料是不安全的;
2.結構體中的資料和對該資料的操作是分離的,並不是乙個被封裝起來的整體,因此使程式難以重用,影響了軟體生產效率;於是c++中引入了類的概念。
c++中規定如果沒有對類的成員加私有private,保護protected,或公有public,則預設為私有的。
而對於c++的結構體來說,成員可以是私有的,保護的或公有的,但預設為公有的;還有要注意的是不能在類的宣告中給資料成員賦值.
一般情況下,乙個類的資料成員應該宣告為私有的,成員函式宣告為共有的。這樣,內部的資料隱藏在類中,在類的外部無法訪問直接訪問,使資料得到有效的保護。而公有的成員函式就成為一種與類外部溝通的介面。
(1)普通的成員函式:
c++中的成員函式要注意幾點:
1.類名和函式名之間應加上作用域運算子「::」,用於宣告這個成員函式是屬於哪乙個類的,如果在函式名前沒有類名,或既無類名又無作用域運算子「::」,那麼這個函式不屬於任何類,不是成員函式,而是普通函式;
2.在類的宣告中,成員函式原型的參數列中可以不說明引數的名字,而只說明它的型別,但在類外定義時必須既要說明引數型別又要說明引數名;
(2)內聯成員函式:
內聯函式又分為顯式宣告和隱式宣告2種方式。
隱式宣告:(這種定義的內聯成員函式沒有使用關鍵字inline進行宣告,因此叫隱式定義)
class kid
void showkid()
; inline void kid::setkid(int age,char*name,char****)
//注意:line 應該在函式定義之前(在宣告之前是否有inline對函式是否內聯不影響)
inline void kid::showkid()
kid1,kid2;
也可以是宣告了類後,使用時在定義物件:kid kid1,kid2;(宣告乙個類後,它並不接受和儲存具體的值,只作為生成具體物件的一種「樣板」,只有定義了物件後,系統才為物件分配儲存空間,以存放物件中的成員);
對物件中的成員的訪問可以是:
1.物件名.資料成員名/物件名.成員函式名(引數),比如kid1.setkid(10,"rookie_j","男");
2.指標訪問物件中成員,比如:class kid; kid kid,*ptr; ptr=&kid;cout3.還記得上節所講到的引用(reference)麼,還可以通過引用來訪問物件中的成員:class kid; kid kid;kid &ptr=kid; cout<;
舉例說明:
#include "stdafx.h"
#include usingnamespace std;
struct struct_kid //結構體
kid1;
class kid
*/ void showkid()//隱式內聯
C 基礎(13)類物件作為成員
類中的資料成員可以是基本資料型別,也可以是類物件這樣的復合資料型別。在乙個類的資料成員中包含了另乙個類的物件稱為類的組合。這個被包含的物件稱為物件成員或子物件。以下例項將日期類的物件作為學生類的成員 include using namespace std class cdate 日期類 cdate ...
c 類成員物件
成員物件 當乙個類的成員是另乙個類的物件時,這個物件就叫成員物件。1 出現成員物件時,如果成員物件的建構函式是有參建構函式,則該類的初始化列表需要對成員物件進行初始化。class member class test 2 乙個有成員物件的類例項化時要先呼叫成員物件的建構函式,然後再呼叫該類的建構函式,...
C 類 物件 成員
物件可以是人們要研究的任何事物,萬事萬物均可看作物件,從簡單的整數到複雜的飛機 衛星等均可以看作物件 class student void setage int age void setheight float height void setweight float weight char getn...