https://blog.csdn.net/weixin_40539125/article/details/81430801
打開VS2015 ,新建VS win32工程,前面步驟很簡單,不再闡述
下面直接開始:
新建一個VC++ win32的程序,
在源文件加下添加.cpp文件,一般放main函數
-
-
-
-
using namespace std;
-
-
-
int main()
-
{
-
Human Tom;
-
Tom.A( 160);
-
people zhangsan;
-
zhangsan.B( 160);
-
-
-
//cout<<Tom.printf();
-
}
在頭文件中添加.h文件(human.h),一般是定義的類
-
class Human
-
{
-
public:
-
void A(int w);
-
private:
-
int *i;
-
};
-
-
-
class people
-
{
-
public:
-
void B(int j);
-
int num;
-
private:
-
int numa;
-
};
頭文件中的.cpp文件放類的構造函數
-
-
-
-
-
-
-
using namespace std;
-
void Human::A(int w)
-
{
-
cout << w << endl;
-
}
-
void people::B(int w)
-
{
-
w -= 100;
-
cout << w << endl;
-
}
-
然后在源文件下的main函數的要加上類的聲明頭文件,頭文件.cpp也要添加類聲明的頭文件
i
注意:頭文件中定義的類,在與之同名的c文件中要做聲明,類的構造函數和析構函數要么顯示定義,也要顯示的聲明,哪怕這些函數里面沒有執行的內容,空的也要寫出來,否則會編譯通不過,要么類的構造函數和析構函數都不寫,類默認產生不執行任何程序的構造函數和析構函數
反正一條:對於類里面的析構函數和構造函數只要定義了,必須要聲明,函數為空也可以
下面補充一下在VS里面多文件系統(即有多個頭文件和cpp文件),使用VS來自動生成類,
1、項目右擊->添加->類
輸入類名后,h文件和cpp文件自動填充好,而且生成的類的構造函數、析構函數、包含頭文件全都有了
如下圖:
生成的代碼:
h文件
-
-
-
-
class Clock
-
-
{
-
-
public:
-
-
Clock();
-
-
~Clock();
-
-
};
cpp文件
-
#include "Clock.h"
-
-
-
Clock::Clock()
-
-
{
-
-
}
-
-
-
Clock::~Clock()
-
-
{
-
-
}
-
上面都是空的,下面在里面填上我們的函數
2、在類里面放上我們的函數
h文件添加函數后
-
-
-
-
-
-
-
using namespace std;
-
-
-
class Clock
-
-
{
-
-
public:
-
-
Clock();
-
-
void SetTime(int NewH, int NewM, int NewS); //三個形參均具有函數原型作用域
-
-
void ShowTime();
-
-
~Clock();
-
-
private:
-
-
int Hour, Minute, Second;
-
-
};
cpp文件添加函數后:
-
-
-
Clock::Clock()
-
-
{
-
-
Hour = 0;
-
-
Minute = 0;
-
-
Second = 0;
-
-
-
}
-
-
void Clock::SetTime(int NewH, int NewM, int NewS)
-
-
{
-
-
Hour = NewH;
-
-
Minute = NewM;
-
-
Second = NewS;
-
-
}
-
-
void Clock::ShowTime()
-
-
{
-
-
cout << Hour << ":" << Minute << ":" << Second << endl;
-
-
}
-
-
-
Clock::~Clock()
-
-
{
-
-
}
-
-
-
3、在main里面添加我們的類包含頭文件
#include "Clock.h" //頭文件
-
-
Clock g_Clock;
-
-
int main() //主函數
-
-
{
-
-
cout << "文件作用域的時鍾類對象:" << endl;
-
-
//引用具有文件作用域的對象:
-
-
g_Clock.ShowTime();
-
-
g_Clock.SetTime( 10, 20, 30);
-
-
-
Clock myClock(g_Clock); //聲明具有塊作用域的對象myClock,並通過默認拷貝構造函數用g_Clock初始化myClock
-
-
cout << "塊作用域的時鍾類對象:" << endl;
-
-
myClock.ShowTime(); //引用具有塊作用域的對象
-
-
return 0;
-
-
}
運行結果:
over!!!