权限控制
public公有权限,类内类外均可访问
protected保护权限:类内可以访问,类外子类可以访问父类的保护内容
private私有权限,类内可以访问,类外不可以访问
struct默认权限为公共,class默认为私有
set只写权限,get只读权限
class和struct的区别
编译器默认class中的成员为private 而struct中的成员为public
假设有一个父类Base,子类Sub继承父类Base,但是在类的外部用Sub类创建的sub对象仍然无法使用父类的成员变量x
因为在继承的时候,如果子类没有声明以什么权限进行继承,那么父类里面无论是什么权限的成员,都会以默认private的方式继承,所以若要使用父类的成员,需要声明以public权限进行继承
private真的不能访问吗?
答案当然是可以访问的。
可以看出,private和public在底层中是没有区别的
也就是说,其实private修饰的成员与普通的成员没有区别,只是编译器不让我们访问,但是如果非要访问还是可以通过指针找到private修饰的内容。而且private修饰的成员只能被自己类中的其它成员访问
private是否被继承?
我们用子类创建一个对象
然后在父类的构造函数中写一个printf测试输出
结果发现父类的构造函数中的printf执行了
这是因为在我们没有创建构造函数的时候,编译器会为我们创建一个构造函数
若我们的类与类之间还存在着继承的关系,那么我们子类的构造函数会调用父类的构造函数
如果父类还有父类,就会一层一层地调用上去
也就是说,对于构造函数来说,父类的构造函数会比子类更先执行完
本文为参考滴水三期的学习笔记