C++类和对象 this指针 构造函数 析构函数

本文详细介绍了C++中类的定义与使用,包括类的声明与定义、封装概念、函数重载、类的实例化等内容。同时深入探讨了构造函数与析构函数的作用与特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类和对象

类定义

类的声明&定义–》类内

类的声明–》.h 类中成员函数的定义–》.cpp

封装概念:类+访问限定符

  • private
  • proteced 在类外不能被一个对象直接访问
  • public

作用域

  • 函数重载

类的实例化
- 用类的类型创建对象的过程

类的对象大小:成员函数不计入大小+内存对齐规则

空类的大小:主流的编译器下,大小为1

this指针

如何编译一个类:
1. 识别类名称
2. 识别当前类中的成员变量
3. 识别类中的成员函数 并且 对这些成员函数进行修改

实际内部实现,自己也可以不写 Student *this,实际是Student const *this:

void set(Student *this,int age)
{
    this->age = 12;
}

void printinfo(Student *this)
{
    cout<<this->age<<endl;
}

this指针

  1. 指向当前对象,在当前类的成员函数中使用
  2. 当前对象中并不包含this指针
  3. this类型:* const
  4. this时成员函数第一个默认的参数,由编译器通过ecx(thiscall)寄存器自动完成传递;不定参数成员函数(_cdecl)是通过参数压栈方式完成传递

构造函数

  1. 构造函数和类名同名
  2. 构造函数没有返回值类型
  3. ==对象构造时==,==编译器==自动调用对应的构造函数,并且在对象的生命周期内==只调用一次==
  4. 可以重载
  5. 可在类内定义,也可在类外定义
  6. 如果类中没有定义构造函数,则编译器默认生成一个缺省的构造函数。如果我们自己定义了构造函数,则编译器就不会自动生成。
  7. 无参构造函数和全缺省构造函数都认为是缺省构造函数,缺省构造函数(只能存在一个)

如果要这样使用:

Date d1(2018,1,1);

则要写出构造函数:

Date(int year,int month,int day)
{
    ...
}

析构函数

与构造函数功能相反,在对象被销毁时,由编译器自动调用,完成类 的一些资源清理和汕尾工作。

特性
1. 析构函数在类名(即构造函数名)加上字符
2. 无参数无返回值一个类只有一个析构函数,如果没有自定义析构函数,系统会自动生成默认的构造函数
3. 对象生命周期结束时,C++编译系统系统自动调用析构函数
4. 注意析构函数体内并不是删除对象,而是做一些清理工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值