四个默认成员函数和重载运算符
来源:互联网 发布:淘宝刀剑能开刃吗 编辑:程序博客网 时间:2024/05/19 17:56
结构体内存对其规则:
(1).第一个成员在与结构体变量偏移量为0的地址处。
(2).其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。
(3).结构体总大小为最大对齐数(每个成员变量除了第一个成员都有一个对齐数)的整数倍。
(4).如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。
2.四个默认成员函数及运算符重载:
(1).【构造函数】
成员变量为私有的,要对它们进行初始化,必须用一个公有成员函数来进行。同时这个函数应该有且仅在定义对象时自动执行一次,这时调用的函数称为构造函数(constructor)。
构造函数是特殊的成员函数,其特征如下:
1. 函数名与类名相同。
2. 无返回值。
3. 对象构造(对象实例化)时系统自动调用对应的构造函数。
4. 构造函数可以重载。
5. 构造函数可以在类中定义,也可以在类外定义。
6. 如果类定义中没有给出构造函数,则C++编译器自动产生一个缺省的构造函数,但只要我们定义了一个构造函数,系统就不会自动生成缺省的构造函数。
7. 无参的构造函数和全缺省值的构造函数都认为是缺省构造函数,并且缺省的构造函数只能有一个。
(2).【拷贝构造函数】
创建对象时使用同类对象来进行初始化,这时所用的构造函数称为拷贝构造函数(Copy Constructor),拷贝构造函数是特殊的构造函数。
特征:
1. 拷贝构造函数其实是一个构造函数的重载。
2. 拷贝构造函数的参数必须使用引用传参,使用传值方式会引发无穷递归调用。(思考为什么?)
3. 若未显示定义,系统会默认缺省的拷贝构造函数。缺省的拷贝构造函数会,依次拷贝类成员进行初始化。
(3).【析构函数】
当一个对象的生命周期结束时,C++编译系统会自动调用一个成员函数,这个特殊的成员函数即析构函数(destructor)
构造函数是特殊的成员函数,其特征如下:
1. 析构函数在类名加上字符~。
2. 析构函数无参数无返回值。
3. 一个类有且只有一个析构函数。若未显示定义,系统会自动生成缺省的析构函数。
4. 对象生命周期结束时,C++编译系统系统自动调用析构函数。
(4).【赋值运算符重载】
拷贝构造函数是创建的对象,使用一个已有对象来初始化这个准备创建的对象。赋值运算符的重载是对一个已存在的对象进行拷贝赋值。
3.隐含的this指针,运算符重载:
隐含的this指针
1. 每个成员函数都有一个指针形参,它的名字是固定的,称为this指针,this指针是隐式的。(构造函数比较特殊,没有这个隐含this形参)
2. 编译器会对成员函数进行处理,在对象调用成员函数时,对象地址作实参传递给成员函数的第一个形参this指针。
3. this指针是成员函数隐含指针形参,是编译器自己处理的,我们不能在成员函数的形参中添加this指针的参数定义,也不能在调用时显示传递对象的地址给this指针。
运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进行的操作,运算符函数的定义和其他函数的定义类似,唯一的区别是运算符函数的函数名是由关键字operator和其后要重载的运算符符号构成的。
- 类和对象(四个默认成员函数+运算符重载)
- 类和对象->四个默认成员函数->运算符重载
- 四个默认成员函数和运算符重载
- 四个默认成员函数和重载运算符
- 类中的四个默认成员函数+运算符重载
- C++四个默认成员函数+运算符重载
- C++四个默认成员函数&运算符重载
- Cpp类和对象之四个默认成员函数和运算符重载
- 类和对象1--四个默认成员函数+运算符重载
- 【c++】类和对象--四个默认成员函数+运算符重载
- 类和对象——四个默认成员函数+运算符重载
- C++类和对象、四个默认成员函数、运算符重载
- CPP类和对象—四个默认成员函数+运算符重载
- 【C++】类和对象--基础知识+四个默认成员函数+运算符重载
- 类和对象 , 四个默认成员函数及运算符重载 , 隐含的this指针
- C++类和对象1--四个默认成员函数+运算符重载
- C++类和对象——四个默认成员函数+运算符重载
- CPP类和对象+四个默认成员函数+运算符重载
- [Linux] MySQL Cluster 集群安装
- 不得不知的心理学:释放连接的力量
- python中的__call__方法
- 如何利用Syncthing+蒲公英快速实现异地文件同步
- SQLserver学习(四)——T-SQL编程之事务、索引和视图
- 四个默认成员函数和重载运算符
- mysql 按时间段查询
- 【云栖大会】阿里云联合中科院量子创新研究院发布量子计算云平台
- 10月10日云栖精选夜读:阿里云Tech Insight 企业迁云实战专场强势来袭!
- ES6模块的import和export用法总结
- bzoj2660 [Beijing wc2012]最多的方案
- TypeScript-基础类型
- 在Linux(centos)下,安装Apache和PHP环境
- javascript 字符串格式化,javascript原型