一、指针知识点
四类重要的知识点
(一)、指针及其基本操作
1、运算符*的用途
1)*用于声明中,表示后面跟随的变量为指针变量
2)*用于指针变量前面,表示存取指针变量指向的内存的数据。强调:每次存取按指针变量的数据类型为单元。
2、指针的加法
1)p+n表示p指向的元素后面的第i个元素的地址
2)*(p+n)等同于p[n]。由此可见,数组的名字是数组的首地址,数组名字是特殊的指针常量。
3)p[n]是指针的一种操作,表示*(p+n),而非数组的固有操作,数组是特殊的简化的指针的实现。
(二)、New运算符指针函数的作用
1、new和delete匹配使用。new运算符的返回结果是开辟的堆区内存空间的地址。
2、new int(3)和new int[3]的差异:第一个是开辟一个空间,初始化值为3,第二个是开辟3个动态数组。
3、delete p和delete []p的差异。
(三)、指针与函数
1、指针作为形参,可以写为int *或者int []两个形式,表示都是指针。
注意:函数调用是参数传递,传递进来的是指针的值,但是由于操作的内容相同,因此,函数内部对内存的改写将影响到实参后续的内存操作。
2、如果一个函数需要同时对多个实参的值进行改变,可以将多个实参的地址传入,利用指针在函数内部进行操作。
3、指针常量,强调指针的值是常量,不可以改变,但是可以改写指针指向的内存的值;常量指针,强调是具有常量特性的指针,即,指针的值可以改变,但是指向的内存不允许改写。
4、函数指针:函数的名字是函数在代码区的首地址,可以通过给定返回值、形参的形式来声明函数指针。
5、指针作为返回值:由于函数调用后,将会清理掉函数本身的局部变量,因此,作为返回值的指针地址不能是局部变量的地址。
(四)、引用
1、引用就是别名,变量的引用就是变量的别名,对引用的操作就是对所引用变量的操作。
2、一个引用所引用的对象初始化后就不能修改。另外,引用就是一个别名,声明引用不会
再为其分配内存空间,而是与所引用对象对应同一片内存空间。因此,对引用的操作与对所引用对象的操作效果完全一样。
3、函数的形参是引用的话,函数内部操作的就是实参本身,因为局部变量是外面实参的别名。
二、面向对象知识点
1、类、对象和实例的关系
类是具有相同属性和行为的对象的集合,是抽象的共性的定义;对象是具体的存在的独立单位;实例时由某个特定的类所描述的一个具体的对象。
单独说对象时,即可以指一个对象,也可以泛指一般的对象。而实例必然是一个具体的对象。
比如,int x; int--类,x--对象,x=5是一个实例(也叫做对象)。类>对象>=实例
2、继承分为单继承和多继承。多重继承是指继承具有传递性,即某个父类的成员和方法在
后继任意继承层次,子类都将包含。(课本第八章没有区分多重继承和多继承,如果考察就区分,不考察就认为是通用的概念)
3、聚合和组合。前者强调聚集在一起,是整体与部分拥有的关系;后者强调组成,是必不可分的关系。
4、构造函数:
1)完成对象的初始化。一个对象创建(即通过类名声明一个变量)的时候一定会调用某个构造函数。
2)如果累声明中没有构造函数,那么C++会默认创建无参的构造函数;如果已经显示定义了一个构造函数,默认无参构造函数将不会再创建。
3)构造函数名字与类名相同,无返回类型(切记不是无返回值,是两种说法),可以重载。
5、析构函数:
1)函数名字为~类名
2)无返回类型,不可以重载
3)在对象被销毁(作为函数的局部变量,函数运行完毕释放空间时;new出来的堆区存放的对象,被delete时)会自动调用
4)公有的函数(不能被定义为私有)。但是构造函数可以被定义为私有(意味着这个构造函数外部是不可以调用的)
6、对象成员的访问
1)用对象名+“.”+成员的方式来访问,即“.”为成员访问操作符
2)用对象指针,即一个指针指向的内存中存储的是一个对象,使用->操作符来访问该对象的成员
7、类成员的访问控制
1)public:修饰的成员任意位置均可以访问
2)private:只能声明的类可以访问
3)protected:声明的类及其子类可以访问
4)如果不指定访问控制方式,默认是private
8、拷贝构造函数
是一类特殊的构造函数,其函数声明类似: 类名(类名 & )
默认C++创建一个拷贝构造函数,实现基于已有的对象来创建新的对象,将成员变量一一赋值给新的对象,这个情况叫做“浅拷贝”
如果显示给出拷贝构造函数的实现,自己定义实现的细节,称为“深拷贝”
9、类声明和类实现分离
1)可以将类声明放在头文件中,将类的成员函数实现放在cpp源文件中
2)在类声明之外来定义成员函数的时候,要用  类名::成员函数的方式来指定该成员函数的
作用域,即::是作用域运算符,指定成员函数率属于类
10、类的静态成员
1)static修饰类的成员,表示该成员是所有对象的共享,所被修饰的成员率属于类,不被某个对象独有,而是被所有对象共有
2)类的静态成员需要在类体之外来定义,因为其存在于全局数据区,需要用类似全局变量的方式来定义
3)类的静态成员函数只能访问类的静态成员变量,不可以访问一般成员,因为一般成员属于具体某个对象
4)类的一般成员函数可以访问静态成员函数和变量,即它共有了这些静态的成员,是允许访问的
5)类的静态成员访问,可以使用 对象名.成员 、 对象指针->成员,也可以是 类名::成员
11、类的常量数据成员
1)常量成员变量在类声明时不能给以初值,在对象创建时候,在构造函数中才能进行初始化。一旦初始化,就不能再变了。
2)常量成员函数是指以常量的形式来使用成员变量,即在该成员函数中不能更改成员变量的值
12、this指针
1)用一个对象名来访问该对象的成员函数的时候,该成员函数默认存在的this指针就指向了该对象
2)this指针在成员函数的形参与类成员重名的时候,就可以显示使用this指针来指定操作的是形参,还是类的成员变量
13、类的友元
1)友元是一个类允许类之外的函数、其它类、其它类的成员函数访问该类的私有成员的一种办法
2)使用友元可以提高程序的效率(因为无需通过函数调用来访问私有成员了),但是破坏了封装性(因为可以直接操作它的成员变量)
14、类可以定义其余的类为自己的成员变量
15、类的运算符重载:
1)C++的运算符是一个特殊的函数: operator运算符名
2)运算符重载就是函数重载,有两种方式:方式一,以C语言全局函数方式重载,形参为操作数;方式二,如果左操作数是类对象的话,可以将该运算符在类中重载,作为类的成员函数,这样的成员函数的形参就会减少左操作数。
3)运算符重载的规则要记住。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。