1. 程式人生 > >C語言到C++ 類的基礎學習

C語言到C++ 類的基礎學習

類的分裝

#include <iostream>

using namespace std;

//封裝,把屬性和方法進行封裝,對屬性和方法進行訪問控制
//類的內部和類的外部

//class 關鍵字是結構體struct關鍵字的加強
class MyCircle
{
//public修飾的成員變數和函式,可以在類的內部和類的外部訪問
public:
	double m_r;	//屬性 成員變數
	double m_s;

public:
	double getR()
	{
		return m_r;
	}

	void setR(double r)
	{
		m_r = r;
	}

	double getS()
	{
		m_s = 3.14 * m_r * m_r;
		return m_s;
	}

//protected 修飾的成員和變數只能在類的內部訪問
protected:
private:

};
//類封裝的威力 相當於結構體包含了成員函式
void printCircleA(MyCircle *cp)	//指標
{
	cout << "指標方式:" << endl;
	cout << "半徑:" << cp->getR();
	cout << "  面積:" << cp->getS() << endl;
}

void printCircleB(MyCircle &cp)	//引用
{
	cout << "引用方式:" << endl;
	cout << "半徑:" << cp.getR();
	cout << "  面積:" << cp.getS() << endl;
}


int main01()
{
	MyCircle c1;
	c1.setR(10);
	printCircleA(&c1);
	printCircleB(c1);


	system("pause");
	return 0;
}


類的訪問控制

#include <iostream>

using namespace std;



class MyCircleB
{
//沒有許可權修飾的成員變數\函式 預設私有屬性	
private:		//私有屬性
	double m_r;	//屬性 成員變數
	double m_s;

//public修飾的成員變數和函式,可以在類的內部和類的外部訪問
public:
	double getR()
	{
		return m_r;
	}

	void setR(double r)
	{
		m_r = r;
	}

	double getS()
	{
		m_s = 3.14 * m_r * m_r;
		return m_s;
	}

	//protected 修飾的成員和變數只能在類的內部訪問
protected:
private:

};


int main02()
{
	MyCircleB c1;
	
	c1.setR(10);
	//c1.m_r = 10;	//訪問失敗

	cout << "R:" << c1.getR() << endl;
	cout << "S:" << c1.getS() << endl;
	system("pause");
	return 0;
}


類的宣告和類的實現分開

#include <iostream>
#include "MyTeacher03.h"

using namespace std;

int main03()
{
	MyTeacher03 c1;
	c1.setAge(20);

	cout << "age:" << c1.getAge() << endl;

	system("pause");
	return 0;
}



//##########################################################################
//"MyTeacher03.h"檔案

#pragma once		//條件編譯符 只包含一次

//#ifndef __MYTEACHER_H_
//#define __MYTEACHER_H_

class MyTeacher03
{
private:
	int m_age;
	char name[32];

public:
	void setAge(int age);
	int  getAge();


};
//
//#endif 

//################################################################################
//MyTeacher03.c檔案

include "MyTeacher03.h"

void MyTeacher03::setAge(int age)
{
	m_age = age;
}


int MyTeacher03::getAge()
{
	return m_age;
}