在类中的区别
学习C++这三个关键字是比较基础且常见的,下面先简单介绍下这三个关键字在类内的作用:
- public:公有的,说明声明在public后面的成员所有人都是可以使用的,比如一个公有成员变量可以直接使用该类的对象"."出来这个成员,如果这个成员是protected和private都需要通过public的函数来访问这个成员。
- protected:受保护的,类内和子类可直接访问,也就是说,基类中有protected成员,子类继承于基类,那么也可以访问基类的protected成员,要是基类是private成员,则对于子类也是隐藏的,不可访问。
- private:私有的,只有类内的成员函数才可以访问。
在继承时的区别
在继承时也可以使用这三个限制继承方式下面介绍下这三个关键字在继承时的作用:
1.public:表示公有继承,特点是父类的public、protect成员属性在子类中保持不变但是父类的私有成员无法被子类直接访问。子类成员函数可以直接访问父类的public、protect成员,子类的对象只能访问基类的public成员。
2. protected:表示保护继承,特点是基类的public、protect成员属性在子类中都会成为子类的protected成员。但是父类的私有成员无法被子类直接访问。子类成员函数可以直接访问父类的public、protect成员,子类的对象只能访问基类的public成员。
3. private:私有继承,特点是基类的public、protect成员属性在子类中都会成为子类的private成员。但是父类的私有成员无法被子类直接访问。子类成员函数可以直接访问父类的public、protect成员,子类的对象只能访问基类的public成员。
父类中的private成员从物理结构上来说确实是被子类继承了,但是子类是无法直接访问的,可以通过继承父类中访问父类私有成员的public或protected方法来访问父类的私有成员。
*注意
继承时如果基类中有虚函数即使是私有的虚函数也可以被派生类重新,因为所有的虚函数都存在于虚函数表中,并且子类也会继承这个虚函数表。而且派生类中可以重新定义虚函数在派生类中的访问权限(比如某个虚函数在基类中是private,被派生类继承重写后可以将其访问权限设置为,public或protected或private都可以)
以上内容均是作者查阅资料加自己理解,如有疑问,望读者不吝赐教,谢谢!