基于面向对象的C++

C++是一种基于面向对象的编程语言,强调封装、继承和多态性。它使用访问限定符如public、private和protected来实现数据封装,并通过类实例化创建对象。类的作用域和成员函数的访问规则使得对象能直接访问其公有成员。成员函数并不存储在类的内存中,而是由汇编代码调用其地址,从而节省空间。计算类的大小要考虑内存对齐和成员函数的影响。
摘要由CSDN通过智能技术生成

与面向过程的C语言不同,C++是基于面向对象的语言。

C++的面向对象程序设计

      面向对象设计中的对象指的是类的实例,将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

面向对象的语言有三大特性:封装继承多态

1.访问限定符

          C++中有三种访问限定符  :公有( public )私有( private )保护( protected )。

    访问限定符的作用:

          a. public成员可从类外部直接访问,private/protected成员不能从类外部直接访问。
          b. 每个限定符在类体中可使用多次,它的作用域是从该限定符出现开始到下一个限定符之前或类体结束前。
          c. 类体中如果没有定义限定符,则默认为私有的
          d. 类的访问限定符体现了面向对象的封装性。

2.作用域

        C++中有四种作用域:局部域全局域类域名字空间域

        域定义了变量的生命周期访问区域

作用域的作用:

       a. 每个类都定义了自己的作用域,类的成员(成员函数/成员变量)都在类的这个作用域内,成员函数内任意访问成员变量和其它成员函数。
       b. 对象可以通过 . 直接访问公有成员,指向对象的指针通过 -> 也可以直接访问对象的公有成员。

       c. 在类体外定义成员,需要使用 :: 作用域解析符指明成员属于哪个类域。

3.类实例化对象

     类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类的时候并没有分配内存去存储。

     一个类可以实例化出多个对象,实例化出的对象要占用实际的物理空间存储变量。

     如果说类是一个设计图的话,那么实例化出的对象就是房子,房子才能存储数据,占用物理空间。而设计图只是设计出需要什么成员,但没有实体的建筑存在。

4.sizeof( 类 )

     在计算类的大小时,会牵扯一个问题。类中的成员函数占内存吗?占的化,占多少内存?

     仔细了解类的调用后不难发现,类实例化可以实例化出多个对象,但是类中的成员函数在调用时总是重复的被调用的。

所以计算机为了代码的更高效存储,执行。计算机会把所有类中的成员函数都整理起来,放在一起。在使用的时候,由汇编代码去call函数的首地址。所以,为了节省空间,成员函数是不会存储在类中,而是在使用的时候,由汇编智能的call成员函数所在的地方。

    这个问题解决后,类的大小也就不难计算了。

    去除了成员函数得类看起来与C语言结构体很是相似,其实计算类得大小时,方法与结构体计算方法相同

    在计算类的大小时,也要注意内存对齐问题。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值