【C++】类和对象(上)

前言

  • C有内置类型(int、char等)和自定义类型(结构体、枚举等)

        经过入门的铺垫,就能学习C++的结构体class

  • 这节的难点是类的实例化和this指针的用法

一、什么是class?

  • C++中结构体的成员包括对象(变量) 和方法(函数)
  • C++上更多用class代替struct

二、class的用法

1.定义

                               

  •  C++注重封装性,一般将对象和方法放在同一个类中
  • 不想被用户修订的数据用private或provated保护,可以被修改的用public

2.class的作用域 

  • 在类外定义成员,要用作用域(::)—》 类名::成员  ,说明是哪个类的
  • 例如           

3、class的实例化

类的定义就像一张蓝图;类的实例化过程就像工程师根据蓝图实现

 注意:

  • 类的定义是不占物理空间,类实例化后才占空间
  • 一个类可以实例化多个对象

4、class的大小

  • 类中的大小只包括对象(变量),不包含函数

     原因:

    变量可以定义成不同数据,而函数则是调用同一份空间,如果单独保存数据,就会导致相同的代码多次保持,因此将成员函数放在公共代码段,只保存成员变量的大小

  • 类的大小计算满足内存对齐规则

内存对齐规则:

对齐数=成员对齐数大小 与  编译器默认对齐数 的 最小值  Vs编译器下默认对齐数是8

最大对齐数=成员类型的最大大小 和 默认对齐数 的最小值

1、第一个成员从0地址开始

2、其他成员对齐到对齐数的整数倍地址

3、结构体大小=最大对齐数的整数倍

  • 练习

2和3是空类,占一个字节,不为存放变量,编译器来唯一标识这个类。

5、this指针

有一句经典的话,当你进入一间房间后,你会看到地板、桌子、椅子....但是看不到房子的全貌;

对于一个实例来说,你可以看到成员变量、成员函数,但看不到实例本身;

this指针就是时刻指向这个实例本身;

  • 函数体所有成员访问都是通过this指针,this指针调用谁就传谁的指针
  • this的类型是 *const
  • 本质是形参,存在栈区

思考 下列程序运行的结果;

  •  Printf()会运行奔溃,

在cout<< _a<<endl; 中调用了成员对象,this指针要解引用,由于指针是nullptr,所以无法访问,程序奔溃;

  • Show()正常运行,

成员函数放在公共代码段,不需要指针去找,所以空指针不影响;

三、总结

  • 类和对象中较为简单的一节,学了类的定义,类的实例化,复习结构体大小的计算,了解了this指针调用谁就指向谁;
  • 重点是结构体大小的计算,this特殊用法;

——-——编程没有捷径

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深度搜索

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

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

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

打赏作者

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

抵扣说明:

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

余额充值