1. 程式人生 > >C++學習筆記————類的定義與使用

C++學習筆記————類的定義與使用

練習1,建立一個可以求自身面積與周長的矩形類

# include <iostream>

// 此處class關鍵字也可以換成struct關鍵字
class Rectangle
{
public:
	double w, h;
	//周長函式和麵積函式都是內聯成員函式
	inline void ZhouChang(); 
	void MianJi()
	{
		std::cout << "該矩形的面積是" << w * h << std::endl;
	}

	void SetWidthAndHeight(double width, double height);
	Rectangle(double width, double height);
	
};
Rectangle::Rectangle(double width, double height)
{
	w = width;
	h = height;
}
void Rectangle::SetWidthAndHeight(double width, double height)
{
	w = width;
	h = height;
}

void Rectangle::ZhouChang()
{
	std::cout << "該矩形的周長是" << w * h << std::endl;
}
int main()
{
	Rectangle R(3.5,56);
	R.ZhouChang();
	R.MianJi();
	R.SetWidthAndHeight(6, 76.5);
	R.ZhouChang();
	R.MianJi();
	std::cout << sizeof(R) << std::endl;
	//用指標的方式來呼叫成員函式,成員變數
	Rectangle *p1 = &R;
	p1->SetWidthAndHeight(5, 23);
	p1->MianJi();

	//用引用的方式來呼叫成員函式,成員變數
	Rectangle &p2 = R;
	p2.MianJi();
	//注意此處不能用引用的方式呼叫類的成員函式,
	//因為呼叫成員函式是必須明確其所作用的物件,
	//此處用引用無法搞清楚是作用在哪個物件上面,
	//故編譯會報錯。
	//p2->SetWidthAndHeight(6, 12);
	
	//物件之間可以相互賦值
	Rectangle R1(61,5);
	R1 = R;
	R1.MianJi();

	
	return 0;
}

練習2,實現一個學生類,所有的成員變數為私有 實現 輸入:姓名,年齡,學號,第一學年成績· 第二學年成績,第三學年成績,第四學年成績。         輸出:姓名,年齡,學號,4年平均成績。 例如:輸入: Tom 18  7817  80  80  90  70  輸出: Tom,18,7817,80

# include <iostream>
#include <cstring>
#include<cstdlib>
using namespace std;
class Student
{
	char name[10];//陣列在定義時必須指定空間,不能為空
	int age, id, mark1, mark2, mark3, mark4;
public:
	
	void PrintInfo( char name_[], int age_, int id_, int mark1_, int mark2_, int mark3_, int mark4_)
	{
		strcpy_s(name, name_);//用strcpy會報錯
		id = id_;
		age = age_;
		mark1 = mark1_;
		mark2 = mark2_;
		mark3 = mark3_;
		mark4 = mark4_;
		double Average_mark = 0.25*(mark1 + mark2 + mark3 + mark4);
		
		cout << "name is" << name << endl;//此處用<cstring標頭檔案>就不能用<<運算子輸出 得改成用<string> 標頭檔案
		cout << "age is " << age << endl;
		cout << "id is " << id << endl;
		cout << "the average mark is " << Average_mark << endl;

	};
	

};

int main()
{
	Student Tom;
	char name[10];
	cin.getline(name, 10, ' ');//陣列的傳遞要用變數的形式賦值
	Tom.PrintInfo(name,18,7817,80,80,90,70);
	while (1);
	return 0;
}