C++面向对象-权限控制

权限控制

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执行了
在这里插入图片描述
这是因为在我们没有创建构造函数的时候,编译器会为我们创建一个构造函数

若我们的类与类之间还存在着继承的关系,那么我们子类的构造函数会调用父类的构造函数

如果父类还有父类,就会一层一层地调用上去

也就是说,对于构造函数来说,父类的构造函数会比子类更先执行完

本文为参考滴水三期的学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值