第一步:
#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語言的結構體中,只能存放資料,定義變數...