C++中類的封裝:c++
C++中能夠給成員變量和成員函數定義訪問級別函數
public
:成員變量和成員函數能夠在類的內部和外界訪問和調用private
:成員變量和成員函數只能在類的內部被訪問和調用#include <stdio.h> struct Biology { bool living; }; struct Animal : Biology { bool movable; void findFood() { } }; struct Plant : Biology { bool growable; }; struct Beast : Animal { void sleep() { } }; struct Human : Animal { void sleep() { printf("I'm sleeping...\n"); } void work() { printf("I'm working...\n"); } }; struct Girl : Human { private: int age; int weight; // private修飾兩個屬性,定義訪問級別爲私有 public: void print() { age = 22; weight = 48; printf("I'm a girl, I'm %d years old.\n", age); printf("My weight is %d kg.\n", weight); } }; struct Boy : Human { private: int height; int salary; public: int age; int weight; void print() { height = 175; salary = 9000; printf("I'm a boy, my height is %d cm.\n", height); printf("My salary is %d RMB.\n", salary); } }; int main() { Girl g; Boy b; g.age = 20; // 編譯不過 g.print(); // 經過print()去訪問 b.age = 19; // ok b.weight = 120; b.height = 180; // err b.print(); return 0; }
類成員的做用域:code
public
成員C++中用struct
定義的夫中全部成員默認爲 public
作用域
#include <stdio.h> int i = 1; struct Test { private: int i; public: int j; int getI() { i = 3; return i; } }; int main() { int i = 2; Test test; test.j = 4; printf("i = %d\n", i); // i = 2; printf("::i = %d\n", ::i); // ::i = 1; 訪問默認命名空間,即全局做用域 // printf("test.i = %d\n", test.i); // Error, test.i是私有的 printf("test.j = %d\n", test.j); // test.j = 4 printf("test.getI() = %d\n", test.getI()); // test.getI() = 3 return 0; }
類一般能夠分爲使用方式和內部細節兩部分類的封裝機制使得使用方式和內部細節相分離get
C++中經過定義類成員的訪問級別實現封裝機制io
public成員能夠在類的內部和外界訪問和調用編譯
private成員只能在類的內部被訪問和調用ast