C 中關於類與物件的學習

2021-07-04 11:27:19 字數 1833 閱讀 4061

第一步:

#ifndef stock00_h_

#define stock00_h_

#include

class stock

public:

void acquire(const std::string & co, long n, double pr);

void buy(long num, double price);

void sell(long num, double price);

void update(double price);

void show();

};#endif

第二步:

#include

#include "stock00.h"

void stock::acquire(const std::string & co, long n, double pr)

else

shares = n;

share_val = pr;

set_tot();

}void stock::buy(long num, double price)

else

}void stock::sell(long num, double price)

else if (num > shares)

else

}void stock::update(double price)

void stock::show()

第三步:

#include

#include "stock00.h"

int main()

小結:指定類設計的第一步是提供類宣告。類宣告類似結構宣告,可以包括資料成員和函式成員。宣告有私有部分,在其中宣告的成員只能通過成員函式進行訪問;宣告還具有

公有部分,在其中宣告的成員可被使用類物件的程式直接訪問。通常,資料成員被放在私有部分中,成員函式被放在公有部分中,因此典型類宣告的格式如下:

class classname

private:

data member declarations

public:

member function prototypes

公有部分的內容構成了設計的抽象部分——公有介面。將資料封裝到私有部分中可以保護資料的完整性,這被稱為資料隱藏。因此,c++通過類使得實現抽象、資料隱藏

和封裝等oop特性很不容易。

指定類設計的第二步是實現類成員函式。可以在類宣告中提供完整的函式定義,而不是函式原型,但是通常的做法是單獨提供函式定義(除非函式很小)。在這種情況下,需要使用作用域解析運算子來指出成員函式屬於哪個類。例如,假設bozo有乙個名為retort()的成員函式,該函式返回cha指標,則其函式頭如下所示:

char * bozo::retort()

換句話來說,retort()不僅是乙個char*型別的函式,而是乙個屬於bozo類的char*函式。該函式的全名(或限定名)為bozo::retort()。而名稱retort()是限定名的縮寫,只能在某些特定的環境中使用,如類方法的**中。

另一種描述這種情況的方式是,名稱retort的作用域為整個類,因此在類宣告和類方法之外使用該名稱時,需要使用作用域解析運算子進行限定。

要建立物件(類的例項),只需將類名視為型別名即可:

bozo bozetta;

這樣做是可行的,因為類是使用者定義的型別。

類成員函式(方法)可通過類物件來呼叫。為此,需要使用成員運算子句點:

cout << bozetta.retort();

這將呼叫retort()成員函式,每當其中的**引用某個資料成員時,該函式都將使用bozetta物件中相應成員的值。



C 學習 類與物件

類 就是描述一類問題的共同屬性和行為。共同的,是吧,用個類,就方便使用。屬性,一般就是引數咯,行為,一般就是函式噻 他是抽象的,就像 時鐘 只是一種概念,不佔儲存空間,在定義類時,不能初始化。物件呢,就是類 例項化的一種實體,比如我面前這個時鐘 引數被賦值,這裡多大什麼顏色的時鐘 比如,我建立乙個類...

C 中的類與物件

什麼是類與物件?類是一種抽象化的資料型別,一般而言,它包括資料與處理資料的函式這兩大部分。而物件則是對某一類的例項。例如 class cmyclass cmyclass為類 cmyclass myclass myclass為物件1.類的定義與特點 類的定義示例如下 class cmyclass 各個...

c 中的類與物件

我們都知道,在c語言中,結構體是指一系列相同型別或者不同型別的資料構成的資料集合。在c語言中我們將結構體定義為 struct student 而我們知道,在c語言中,資料 和 處理資料的操作 函式 是分開的,語言本身並沒有支援 資料和函式 之間的關聯性。所以在c語言的結構體中,只能存放資料,定義變數...