C++类详解

目录

听说点赞的人会一直好运哦!

听说点赞的人会一直好运哦!

听说点赞的人会一直好运哦!

类怎么来的?

类的定义:

关于类域:

类的大小:

相关知识:



类怎么来的?

在结构体的基础上延申出来的
祖师爷在原来C结构体的基础上进行了一个升级
就是结构体内部可以定义函数
于是,结构体内部的变量就叫做成员变量,函数叫做成员函数
这个结构体就不再是一个简单的结构体,而是一个类,可以实现相关的功能
而类的定义,实际上就是把结构体定义中的struct改成了class

类的定义:


1、一般来说,建议在成员变量前加一个_前缀,例如_menber
为什么?因为为了避免内部调用传参的时候发生混淆
2、如果类前没有加访问限定符,默认为private(私有);而struct默认为public(公开)
3、访问限定符分:public(公共)、protected(保护)、private(私有)
     public(公共):在类外部可以被访问
     protected(保护)、private(私有)在类外部不可以被访问(继承部分会有变化) 
4、定义类时,可以和struct一样的定义,但是一般定义类不会写class前缀
5、访问限定符怎么用?在类内部使用,作用范围直到下一个限定符为止,直到作用域结束

关于类域:


类本身就是一个域,类似于命名空间域
一个函数、一个for循环、一个类、只要有{}符号,内部都可以看作一个域
而域改变的是搜索规则

类如何做声明定义分离?
注意,声明定义分离最重要的是要解决定义要互相能够找到,要么域打开到全局,要么指定访问
所以,类中的成员函数使用的是指定访问
即在成员函数定义的前面加上::域访问限定符,指定这个函数是某个类的成员函数
但是,并不是说指定了类,就只会到类域中去找
而是,首先是局部域、再类域,类域没有再去全局域,都没有,报错


类的大小:


sizeof(类名):只计算成员变量,(遵循内存对齐)
为什么只计算成员变量呢?
设想一个场景:
有一个类,实例化了1w个对象
那么,这1w个对象的成员变量都是不一样的,因为类对象成员变量可以理解为对象的属性
但是,他们的函数是不是也不一样呢?
不,他们的成员函数都是一样的
那么,加入每个类都存储他们的函数方法,那么就会凭空多出1w个函数的地址空间
而这个空间内的内容又都是一样的,是不是一种特别蛋疼的捏村浪费?
是的,没错,就是浪费
所以,成员函数不存储在类内,而是单独抽取出来,在一个公共域
这个公共域叫做代码段
因此,记住,对象只存成员变量

那么,问题又来了:
如果一个类内部,一个成员变量都没有,只有成员函数
那,这个类的大小是多少?
按上面的逻辑,是0对吗?
好,那么,问题又来了:
即使这个类的内存是0
那,你怎么证明这个类存在?
去哪找这个类?这个类在哪!?!天上?海底?还是你心里?
所以,明显给0是不靠谱的
所以,祖师爷规定:
没有成员变量的类大小是1bety,也就是1字节
就是为了记录这个类存在过

相关知识:


关于定义:
变量定义的标志是开辟空间
定义不是初始化,初始化是给定义初始一个值,概念不要混淆

封装:
把数据和函数封装起来,起到一个保护的作用,不让外部访问修改的private,可以让外部访问修改的pubilc或者protected
使得代码更加规范,舒爽

C语言是面向过程编程
C++是面向对象编程 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十5画生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值