1、派生类转换为基类又称为向上转换,总是隐含进行的。派生类转换为基类总是合法和自动的,即派生类总是可以转换为基类的引用类型。
基类转换为派生类需要在确定安全的情况下,使用强制转换来进行转换。
2、虚成员即虚函数,虚函数是用于面向对象中实现多态的机制。核心理念就是通过基类访问派生类定义的函数。虚函数必须是基类的非静态成员函数,访问权限为protected和public,如果函数在基类中声明为虚函数,它就一直为虚函数,派生类也不可以改变。
虚函数的作用是实现动态解析,即在程序的运行阶段动态的选择合适的成员函数。当程序发现虚函数名前的关键字virtual后,会自动将其作为动态联编处理,即在程序运行时动态选择合适的成员函数。
3、析构函数命名必须与类名相同,析构函数没有返回值,所以也就没有返回类型,不能使用void修饰;另外,构造函数不能直接被调用。
定义一个类的时候,通常会定义该类的构造函数,若没有提供,则C++会提供一个默认的构造函数,这个默认的构造函数是无参构造函数,仅仅负责创建对象。
构造函数和析构函数的调用都是自动进行的。建立对象时会调用构造函数,而销毁对象时会调用析构函数。
4、protect成员可以被派生类对象访问但不能被该类型的普通用户访问。Private成员只能被基类的成员和友元访问、
C++使用默认继承保护级别,使用class保留字定义的派生类默具有private继承。使用struct保留字定义的类默认具有public。友元关系不可以继承的。Static成员属于类,而非对象,在继承层次中只有一个这样的成员。既可以通过基类访问static成员,也可以通过派生类访问。
5、覆盖:派生类中如果存在重新定义的函数,其函数名、参数列、返回值类型必须同父类中的相对应被覆盖的函数严格一致。覆盖函数和被覆盖函数只有函数体不同。
覆盖在继承时派生类对于抽象类或者接口声明的方法的具体实现时使用。
6、 浅复制又称为浅拷贝,指的是在对象复制时,只是对对象中的数据成员进行简单的赋值,默认复制构造函数执行的也是浅复制。
深复制又称为深拷贝,对于对象中的动态成员,要重新动态分配空间。
如果一个类拥有资源,当这个类的对象发生复制过程的时候,这个过程就可以叫深复制,如果对象存在资源但在复制过程中并未复制资源就是浅复制。
7、C++中有3种对象需要复制的情况:
1)一个对象以值传递的方式传入函数体;
2)一个对象以值传递的方式从函数返回;
3)一个对象需要通过另外一个对象进行初始化。如果在前两种情况下不使用复制构造函数的时候,就会导致一个指针指向已经被删除的内存空间。
8、C++中,某些类型间存在相关的依赖关系。若两种类型相关,则可在需要某种类型的操作数位置上,使用该类型的相关类型对象或值。如果两个类型之间可以相互转换,则称这两个类型相关。
C++中,类型转换有隐式转换和显式转换。显式转换也称为强制类型转换,具有一定的危险性。
9、一个类的构造函数只有一个参数,而且这个参数不是该类的类型而是其他类型,这个构造函数就被称为类型转换构造函数。转换构造函数可以用来处理不同域的同一个数据值。