C語言到C++ 類的基礎學習
阿新 • • 發佈:2018-11-15
類的分裝
#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; }