C++学习之构造函数和析构函数及指针
2024-09-06 05:24:45
C++的构造函数在创建对象时调用,分配内存空间,多少个对象(对象数组)就调用几次构造函数;析构函数在调用结束时调用(可以添加一些最后的处理)以释放内存给其它来用。对于同类型同生命期的对象,先创建的对象,先调用构造函数,但调用析构函数顺序在最后。
构造函数可以有多个(重载),构造函数也可以带参数(也可以设置默认值(相当于多个重载函数,所以有默认值参数的构造函数就不要在重载多个了否则会出错))从而可以给不同对象传递不同参数,参数的赋值可以在类定义中进行".cpp",也可以在类对象声明中用列表化传递,参数也可以只给类型。
析构函数只有一个不能重载,对象的析构顺序和构造顺序相反。
对象数组的初始化方法:当构造函数只有一个参数时可以“大括号逗号隔开”,当构造函数参数有多个时可以用“大括号中构造函数(参数列表1),构造函数(参数列表2),,,构造函数(参数列表n)}"
指针:
类对象也可以有指针,用以指向对象的首地址;
类对象的数据成员也可以有指针,和一般类型对象指针没有什么区别。
类对象的函数成员的数据指针与一般的函数指针不同,声明方法:返回值类型(类型::*pfun)(参数列表)=&类名::函数(),注意因为类的函数成员是对所有的对象的,所以指针也要指向类的函数而非对象的函数,但调用时要用"对象.*pfun()"
this指针:是隐式的默认传递的,所以不同对象调用同类的成员函数时系统能区分调用的是哪个对象的数据成员,当然也可以显示调用。
最新文章
- 生成模型(Generative Model)与判别模型(Discriminative Model)
- PHP上传实现进度条
- MVC EF中Attach和Entry区别
- 小波变换C++实现(一)----单层小波变换
- Cocos Code IDE新建lua工程报错解决方案
- Android自定义之TextView跑马灯的监听
- QGrphicsView, QGraphicsScene 和 QGraphicsItem 的区别
- 锋利的jQuery读书笔记---选择器
- ACM位运算技巧
- Extjs 4学习2
- html学习笔记 - meta link
- 【AIX】AIX内存机制
- openlayers4 入门开发系列之热力图篇(附源码下载)
- springboot~添加新模块的方法
- SSH实现ajax
- Qtree3题解(树链剖分+线段树+set)
- ios读取plist文件:
- 0 开发的准备工作一一虚拟机virturalbox
- MonkeyRunner进坑——errors importing other modules
- hazelcast初探