看一個我們常見的例子:
int a=2; //a是變量名
int a(2); //這個對於新手可能不常見,a是函數名
int b(a); //用a作為b()的形參來初始化b()
無論哪一句a都被賦值2,試想如果我們也能造出一個自定義類型也能夠像int這樣工作,甚至有更多功能的話,那有多麼酷~~!!!
先來YY一下:
Cool a(2,3);
這裡Cool和int是完全一樣的類型,而且a被2,3共同作用初始化,這不比一個光用2初始化更有意思嗎?
面向對象的兩大原則就是:1、萬物皆對象
2、每個對象都有一個類
類(class)和類型(type)是同義詞,所以我們定義一個類Cool和int都是類,是一樣的,只不過int是別人定義好了的,而Cool是自定義的。
那麼怎麼用C++語言來描述呢?請看下例:
Class Cool // 聲明類Cool
{
/*.....省略,無構造函數....*/
};
main()
{
Cool b; // 建立對象b
}
請問對象b的類型是什麼?對了,是Cool !好,反過來int a中a在面向對象的語境中是什麼?
呵呵,是int類的對象或者叫實例!從現在起換個方式看待 int a 吧!
現在我們將要定義Cool類,它的使用方法將和平時常見的int類一樣,還有更多功能呢!
如果沒有構造函數的話,我們只能寫成:
{
public:
int fun(int a=0,int b=0){A=a;B=b;}
int GetA(){return A;} //我們取出A來觀察結果
private:
int A,B;
};
main()
{
Cool myCool;
myCool.fun(3,4); //這裡是調用對象myCool裡的函數還是沒有實現Cool a(3,4)的夢想~~~
cout<<myCool.GetA()<<endl;
}
如果用構造函數
#include <iOStream.h>
class Cool
{
public:
Cool(int a=0,int b=0){A=a;B=b;} //構造函數
int GetA(){return A;}
int A,B;
};
main()
{
Cool x(3,4); //可以了!
Cool y(x);
cout<<y.GetA<<endl;
}
後面寫得不太詳細,以後在改寫