第五十七篇:VS2015建立一個完整的c++工程:頭文件.h 源文件.cpp,自動生成類

之前沒有用VS或者在vs中一個源程序寫到底,沒有使用C++編一個工程

打開VS2015 ,新建VS win32工程,前面步驟很簡單,不再闡述

下面直接開始:

新建一個VC++ win32的程序,

在源文件加下添加.cpp文件,一般放main函數

#include <iostream>
#include <locale>
#include "human.h"
using namespace std;


int main()
{
Human Tom;
Tom.A(160);
people zhangsan;
zhangsan.B(160);


//cout<<Tom.printf();
}


在頭文件中添加.h文件,一般是定義的類

#include "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文件放類的構造函數

#include "human.cpp"


#include <iostream>
#include "human.h"
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文件

#pragma once

class Clock
{
public:
	Clock();
	~Clock();
};
cpp文件
#include "Clock.h"

Clock::Clock()
{
}

Clock::~Clock()
{
}


上面都是空的,下面在裏面填上我們的函數

2、在類裏面放上我們的函數

h文件添加函數後

#pragma once
#include <iostream>
using namespace std;

class Clock
{
public:
	Clock();
	void SetTime(int NewH, int NewM, int NewS);   //三個形參均具有函數原型作用域
	void ShowTime();
	~Clock();
private:
	int Hour, Minute, Second;
};
cpp文件添加函數後

#include "Clock.h"
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!!!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章