《重生到现代之从零开始的C++生活》—— 类和对象2

类的默认成员函数

默认成员函数就是用户没有显示实现,编译器会自动生成的成员函数,一个类会默认生成6个成员函数

构造函数

构造函数时特殊的成员函数,构造函数的初始化对象

  • 函数名与类名相同

  • 没有返回值

  • 对象实例化的时候胡自动调用构造函数

  • 构造函数可以重载

  • 如果类中没有显式定义函数,会自动生成一个无参的默认构造函数

cpp 复制代码
class a
{
  public:
  add(int a.int b)
   {
     return a+b;
   }
   a()
   {
     _a=1;
     _b=1;
   }//无参构造函数
   a(int a=1,int b=1)
   {
     _a=a;
     _b=b;
   }//全缺省构造函数
  private:
  int _a;
  int _b;
};
  • 无参函数和全缺省构造函数,还有默认生成的构造函数,我们都叫默认构造函数,但是他们三个不能同时存在

反正不传实参就能调用的构造函数就是默认构造

在编译器自己生成的构造函数中,他对内置类型的变量的初始化是不确定的,所以我们要自己写构造函数

对于自定义类型,会调用这个自定义类型成员变量的默认构造函数,如果没有就会报错

析构函数

析构函数与构造函数相反,解析函数就是对资源的亲历工作,多用于动态开辟内存的时候才需要析构函数

在对象销毁时会自动调用解析函数

  • 析构函数是在类前面加一个~
  • 也是无参数无返回值
  • 一个类只有一个解析函数,如果没有编译器会默认生成

编译器默认生成的析构函数对内置类型不处理,自定义类型成员会调用他自己的析构函数

他的意思就是,只要有开辟动态空间的行为,我们就要自己写,不管在哪里,因为类似指针就是就是内置类型,要释放我们就要自己写

相关推荐
wuyk555几秒前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python
yurenpai(27届找实习中)7 分钟前
Java 10 的 var 为什么不能随便用?从订单汇总看懂类型推断与泛型陷阱
java·开发语言·java18
shmily麻瓜小菜鸡28 分钟前
JS/TS 易踩坑知识点 — 模块化与工程化类
开发语言·javascript·ecmascript
geovindu40 分钟前
CSharp: Observer Pattern
开发语言·后端·观察者模式·设计模式·c#·.netcore·行为模式
handler011 小时前
【Linux】线程与虚拟内存的底层世界
linux·运维·服务器·c++·线程·虚拟地址空间·共享内存
郝学胜-神的一滴1 小时前
C++11 工程级应用 09:告别无谓拷贝,解锁高性能移动语义
开发语言·数据结构·c++·vscode·软件工程·visual studio
MC皮蛋侠客2 小时前
OPC UA 系列(一):标准全景与 Python 最小闭环——让第一条设备数据流动起来
开发语言·python·opcua
SamChan903 小时前
PDF翻译后的格式完整性校验:用Python自动比对译文与原文档的表格与段落结构
开发语言·python·ai·pdf·机器翻译
hetao17338373 小时前
校内场-提高组 ZYZSC-S-Round 4
c++·算法
君顾13 小时前
外卖CPS系统开发实战指南:从架构设计到部署全流程解析
java·开发语言·外卖