标签:知识点 强制转换 基本数据 静态 形式 创建动态数组 struct 处理 析构
期末了,总结一下教材上面的知识点
第九章
9.1 类的声明
1.在声明类的成员同时要声明该成员的访问属性。
2.C++结构体与类的唯一区别:struct成员的访问属性默认为public,class成员的访问属性默认为private。
3.一般将必须对外的部分设计成公开的,不必对外的成员设计成受保护的或者是私有的。
4.类的成员函数对于同一个类的所有数据成员具有无限制的访问能力。
9.2 对象的基本空间
5.创建对象意味着给对象分配内存空间。
6.我们将对象的非静态数据成员所占用的空间总和称为对象的基本空间。
9.3 对象的自我表现
7.this的指向被锁定不能更改。
8.常量成员函数是类的成员函数,这种函数的隐含形式参数指向本对象的常量指针常量(const * const this),故在函数体内只能读取但是不能修改本对象的任何属性
9.常量对象只能调用常量成员函数。
10.将类当中所有不修改对象属性的成员函数都设计成常量成员函数是有好处的。
9.5 类模板与模板类
11.函数模板是-在源代码级,数据类型待定而操作确定的函数描述
看一个二维向量模板的例子:
template <typename TYPE>class Vec2 //类模板的声明 其中TYPE是待定数据类型,或者称为形式数据类型
12.模板成员函数在类声明体外描述时候的书写格式:
template <typename TYPE>表示模板 TYPE表示形式数据类型 而“模板名<TYPE>"是模板完整的形式类名(带形式数据类型的类名)
第十章 构造函数及其赋值运算
1.构造函数和析构函数是C++类中与对象的创建、销毁有关的函数。
2.执行赋值运算并不创建新的对象,作为参与赋值运算的左操作数(左值对象)是早已存在的对象,赋值运算操作只是可能改变数据成员而已。
10.1 构造函数
3.构造函数完成处理对象空间、构造结构和初始化数据成员等工作。
4.没有构造函数就不能构造对象。
5.任何类都至少有两个构造函数(默认构造函数和默认拷贝构造函数)
6.默认构造函数是不需要实参的构造函数。声明类的时候如果没有定义任何构造函数则系统会为这个类提供一个默认的构造函数。
7.转换构造函数:带有一个实参的构造函数(叫做转换构造函数是因为可以用它实现数据类型的隐式转换或者强制转换) (我也不知道是什么意思没看懂)
8.构造函数的使用
(1)创建对象数组
创建对象数组的时候要有一个常量作为数组的元素个数。创建数组的每一个元素的时候都要调用一次构造函数或者拷贝构造函数。
格式: 类名 对象数组名[元素个数]={构造函数名(实参表)};
(2)创建动态对象或者动态对象数组
C++运算符new和delete有很强的功能。用new运算符创建堆对象时,该操作运算具有调用类的相应的构造函数或者拷贝构造函数的功能。
new运算符创建了堆对象(堆对象数组)成功之后,返回从堆空间所”切“下来的连续空间的首地址。
程序中用一个指针记录下这个地址值,方便访问操作堆对象或堆对象数组的元素,以及使用完毕之后释放所申请的堆内存资源。如果new操作不成功,就返回空指针NULL。
创建动态数组的每一个元素时都要调用一次构造函数。
10.2 析构函数
9.析构函数没有返回类型,没有参数并且不能被重载。(函数重载一般都是利用参数表的不同来重载,但是他没有参数所以不可能被重载)一般不应该显式的调用析构函数。
10.在声明类的时候,如果没有设计析构函数系统会为该类提供一个默认析构函数。系统的默认析构函数仅仅完成对象基本数据空间的清理工作。
如果对象带有资源,应该定义析构函数来完成对象所带资源的清理工作。
标签:知识点 强制转换 基本数据 静态 形式 创建动态数组 struct 处理 析构
原文地址:https://www.cnblogs.com/joelovescoding/p/11829039.html