C++基础,从面向过程到面向对象

从面向过程到面向对象,需要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++编译器隐藏了,所以函数就表现为了某对象的行为(即函数表现与对象直接挂钩)。

猜你喜欢

转载自www.cnblogs.com/yangxinrui/p/11738795.html
今日推荐