标签:lin ++ 需要 继承 参数 元素 虚函数表 程序 div
1.抽象类只能作为其他类的基类,不能建立对象,但抽象类的派生类如果给出纯虚函数的函数体,这个派生类仍然是一个抽象类。//这个好理解 懂了
2.抽象类不能作为参数类型,函数的返回类型或者显式转化的类型。//不懂,先存着。
3.C++要求对一般的内置函数要用关键字inline声明,但对类内定义的成员函数,可以省略inline,因为这些成员函数已被隐含地指定为内置函数,在类外定义时加inline,则为内置函数。//内置函数是啥?先不管了
4.子对象:在定义一个新类时,可以把一个已经定义的的对象作为该类的数据成员,这个类的对象被称为子对象。
e.g.:子对象不能是自身类的对象。//都在定义自己了,哪来的自身的子对象。。
e.g.:静态成员只可用类名加作用域运算符来引用,不可用对象引用。(X)//是可以用对象名调用的,只是会使人误以为静态成员属于某个对象,所以不建议。
5.若PAT是一个类,则程序运行时,语句“PAT (*ad)[3];”调用PAT的构造函数的次数是(0)。
PAT (*ad)[3]:声明一个指向3个PAT类型的对象的指针,声明的是指针,并没有新的对象生成,所以构造函数调用的次数为0;
but:PAT ad[3]:声明了一个数组,数组里又三个Pat元素,这三个元素是真是存在的,所以一定会调用默认的构造函数为其分配空间。//所以就是三次
6.void Set(A& a);是类A中一个成员函数的说明,其中A &a的含义是//类A的对象引用a作为该函数的参数
7.静态成员函数不可以说明为虚函数//调用静态成员函数不需要实例,但调用虚函数但调用虚函数需要从一个实例中指向虚函数表的指针以得到函数的地址,因此调用虚函数需要一个实例。两者相互矛盾。
8.派生类构造函数的成员初始化列表中,包含:(1)基类数据成员初始化(2) 派生类的子对象初始化(3)派生类自身数据成员初始化
但没有!基类子对象初始化(基类的子对象已经成为了基类的数据成员,在基类数据成员的初始化里,别的数据成员怎么初始化,它就怎么初始化)
9.基类和派生类中同时出现同名成员时,会产生二义性(XXXXX )首先明确!二义性全称:多重继承的二义性
如果只是单继承,派生类和基类同名,子类的函数会覆盖基类的函数(或者说把基类隐藏了)
标签:lin ++ 需要 继承 参数 元素 虚函数表 程序 div
原文地址:https://www.cnblogs.com/yuuuuu422/p/12090792.html