标签:封装 作用域 学历 table int ima 工程师 耦合 局部变量
电脑一般而言是由CPU,内存,主板,键盘和硬盘等部件组合而成。
思考:学习电脑组装需要多少时间?学习电脑组装是都需要学习显示器,键盘,鼠标,主板等部件的设计与制造?
我们可以把程序按某种规则分成很多"块",类与类之间可能会有联系,每个类都有一个可变部分(public)和一个不可变部分(private)。我们需要把可变部分和不可变部分分离出来,将不可变的部分暴露给其他类,而将可变的部分隐藏起来,以便于随时可以让它修改。这项工作就是封装。
例如:普通用户使用手机,只需要学习如何发短信,打电话,拍照等等。而这些功能如何实现,则是手机开发工程师需要考虑的事情。
- 如:女孩子不希望外人知道自己的体重和年龄
- 如:男孩子不希望别人知道自己的身高和收入
- 如:人的姓名,学历,国籍等
- 类似文件系统中文件的权限
- public
成员变量和成员函数可以在类的内部和外界访问和调用
- private
成员变量和成员函数只能在类的内部被访问和调用
示例代码:类成员的访问属性
struct Human { void sleep() { printf("I‘m sleeping...\n"); }
void work() { printf("I‘m working...\n"); } };
struct Girl : Human { private: int age; int weight; 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 girl; Boy boy; Human human;
human.sleep();
girl.print();
boy.age = 19; boy.weight = 120; boy.height = 180; //Error: ‘int Boy::height‘ is private
boy.print();
boy.work();
return 0; } |
分析:
我们知道全局变量和局部变量都有作用域,那么类也有作用域吗?
示例代码:类成员的作用域
#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 printf("test.j = %d\n", test.j); // test.j = 4 printf("test.getI() = %d\n", test.getI()); // test.getI() = 3
return 0; } |
分析:
标签:封装 作用域 学历 table int ima 工程师 耦合 局部变量
原文地址:http://www.cnblogs.com/Oushangrong/p/7143603.html