二.C++重点回顾

来源:互联网 发布:淘宝拍下改价格对权重 编辑:程序博客网 时间:2024/05/12 23:23

1.结构体与类的区别

结构体的成员默认是公有的,类的成员默认是私有的。

2.构造函数

只有在以下三种情况,才会提供默认的构造函数。

1.  如果类的虚拟成员函数或者虚拟继承父类时;

2.  如果类的基类有构造函数;

3.  在类中的所有非静态的对像数据成员,它们所属的类中有构造函数。

3.类成员变量

在类中定义成员变量时,不能直接给成员变量赋初值。

4.重载构成条件

函数的参数类型,参数个数不同。

void output();

int output();不构成重载。

 

void output(int a,int b=5);

void output(int a);

不构成重载,因为第一个函数默认了boutput(3)时不知道调用哪个函数。

5.this指针

this指针是一个隐含的指针,它是指向对象身的,代表了对象的地址。例如在对象pt.input(10,10)时,成员函数除了收到2个实参外,还接收到了pt对象的地址,这个地址被一个隐含的形参this指针所获取,它等同于执行this=&pt。所有对数据成员的访问都隐含地被加上了前缀this->。例如:x=0;等价于this->=0

6.子类调用基类构造函数

fish():animal(300,400)

7.类的继承及访问特性

1.public 定义的成员可以被任何地方访问。

2.protected只能在基类和派生类访问。

3.private 只能在该类自身中访问。

public 继承 保持基类中访问权限不变,private不被继承

protected 继承 publicprotected

private 继承 public protected private

8多重继承

多重继承只有在类似下列情况,顺序才不可乱用

class B:public C,public D

由构造函数引起的初始化发生顺序

代码依赖于BD部分要在C部分之前初始化。这时就要改成

class B:public D,public C

激活析构函数以做清除工作的顺序。

同样,当类的其他部份正在被清除时,如果某些特别部分要何留,则该顺序也很重要。析构函数的调用顺序是按基类表说明顺序的反向进行调用的。

9.虚函数与多态性

在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。

在运行时依据对象的类型来确认调用的是哪一个函数,这种能力就叫做C++的多态性。

C++的多态性是由迟绑定技术实现的,没有在函数前加关键字virtual时,C++编译器在编译时就确定了哪个函数被调用,这叫早期绑定。

10.纯虚函数

virtual void fn()=0;

纯虚函数是指被标明不具体实现的虚成员函数(注意:纯虚函数也可以有函数体,但这种提供函数体的用法很少见)。凡是有纯虚函数的类叫做抽象类。这种类不能声明对象,只是作为基类为派生类服务。在派生类中必须完全实现基类的纯虚函数,否则派生类也变为抽象类,不能实例化对象。

11.函数的覆盖

函数覆盖发生条件为

1.  基类函数必须是虚函数数。

2.  发生覆盖的两个函数要分别们于派生类和基类中。

3.  函数名称与参数列表必须完全相同。

12.函数的隐藏

函数隐藏发生的条件为

1.派生类的函数与基类的函数完全相同,只是基类的函数没有使用virtual关键字,基类的函数数都将被隐藏。

2.派生类的函数数与基类的函数同名,但参数列表不同,在这种情况下,不管基类的函数声明是否有virtual关键字,基类的函数都将被隐藏。

13.隐藏与覆盖区别

这里举个例子

class Base

{

public:

virtual fn();

};

class Class1:Base

{

public:

fn(int x);

};

class Class2:Class1

{

public:

fn();

};

Class1中的fnBase中的fn进行了隐藏,Class2fnClass中的fn就行了隐藏,Class2中的fnBase中的fn进行了覆盖。

14.引用

引用必须在声明的时候就初始化,引用一但初始化,它就代表了一块特定的内存,再也不能代表其它的内存。

引用只是一个别名,是一个变量或对象的替换名称。引用的地址没有任何意义,因此C++没有提供访问引用本身地址的方法。

引用多数用在函数的形参定义上。

15.作用域标识符

::是作用域标识符,用来标识函数和数据成员属于哪个类。如果::前面不跟类名,表示是全局函数或数据。

16.解决头文件多次包含

#ifndef XXX

#define XXX

#endif

原创粉丝点击