1. 程式人生 > >C++中類的宣告和類的實現分開

C++中類的宣告和類的實現分開

首先我們要實現確定一個點是否在園內的功能

所以我們需要兩個類一個Point類,一個Circle類

首先我們要先建立一個專案,名為Test2(這是我的專案名字)這裡不做過多的解釋,使用vs應該都會建立專案(我是建立的C++的專案,所以選擇Win32控制檯應用程式,建立的空專案)

然後右擊專案名稱—新增,點選建立類。


然後選擇類,雙擊會出現下面的介面


鍵入Point會顯示出一個.h檔案,一個.cpp檔案,點選完成,會出現一個原始檔,一個頭檔案。檔名為Point

#pragma once
class Point
{
public:
	int GetX();
	
	int GetY();
	
	Point(int x, int y);

	Point();

private:
	int x;
	int y;
};
在Point.h檔案中編入程式碼,是關於一些成員函式的宣告#Pragma once 是表示只讀一次

然後再Point.cpp檔案中編入一下程式碼

#include "Point.h"

int Point::GetX()
{
return x;
}

int Point::GetY()
{
return y;
}

Point::Point(int x1, int y1)
{
x = x1;
y = y1;
}

Point::Point()
{


}
主要是Point.h中的函式的實現,要引入Point.h標頭檔案,所以要寫入#include“Point.h"

然後再以同樣的方法建立一個名為Circle的類

在Circle.h中編入以下程式碼

#pragma once
#include"Point.h"

class Circle
{
public:

	double GetR(double r);
	
	double GetS();
	
	double GetC();
	
	Point GetO();
	
	bool IsInCircle(Point p);
	
	Circle(Point o1, double r1);

	Circle();

private:
	double m_r;
	double m_s;
	double m_c;
	Point o;
};
因為用到了Point 類,所以也要#include "Point.h"

在Circle.cpp中編入以下程式碼

#include "Circle.h"
#include"Point.h"

double Circle::GetR(double r)
{
	m_r = r;
	return m_r;
}

double Circle::GetS()
{
	m_s = 3.14*m_r*m_r;
	return m_s;
}

double Circle::GetC()
{
	m_c = 2 * 3.14*m_r;
	return m_c;
}

Point Circle::GetO()
{
	return o;
}

bool Circle::IsInCircle(Point p)
{
	if (((p.GetX() - o.GetX())*(p.GetX() - o.GetX()) + (p.GetY() - o.GetY())*(p.GetY() - o.GetY())) <= m_r*m_r)
	{
		return true;
	}
	else
	{
		return false;
	};
}

Circle::Circle(Point o1, double r1)
{
	o = o1;
	m_r = r1;
}
Circle::Circle()
{

}
也主要是Circle.h 中的函式實現,IsInCiicle是實現點是否在圓內的函式

然後右擊原始檔,新增,新增新項,建立一個.cpp檔案,命名為main.cpp



此檔案中有main方法,是程式的入口

在檔案中編入以下程式碼

#include<iostream>
#include"Circle.h"
#include"Point.h"
using namespace std;

int main()
{
	Point o = Point(0, 0);
	Circle c1 = Circle(o, 5);
	Point p1(3, 4);
	bool b = c1.IsInCircle(p1);
	cout << b << endl;

	return 0;
}
確定好標頭檔案,建立物件,呼叫方法