从面向过程到面向对象,需要C编译器能实现下面功能:
封装
继承
多态
1.封装
实现封装有两个要解决的问题:
将函数和属性绑定。
实现访问控制
访问控制
访问控制分两类:全局访问,类中访问。 private 类中访问 protect 类中访问 public 全局访问
作为C++编译器能扫描全局,所以很好实现这一点。
函数和属性绑定
class C { public: void func() {cout << num;} priavte: int num; }; C c1(1), c2(2); c1.func(); //c1的func() 和 c2的func(),的执行结果是完全不同的,就像是C++编译器为c1,c2两个对象重新定义了两个函数(当然这是不可能的)。 c2.func(); //那么作为C++编译器应该如何实现这种功能呢?注意this指针。
// 所以实现方法是:
// void func(class C *this) {cout << this->num;}
// c1.func(&c1); c2.func(&c2);
// 由于这些操作被C++编译器隐藏了,所以函数就表现为了某对象的行为(即函数表现与对象直接挂钩)。