SZU

    xiaoxiao2022-07-02  168

    父类和子类的赋值问题 1.子类可以直接赋值给父类 如Cpoint = CRect 2.通过强制类型转换,可以让父类赋值给子类 如(Cpoint) Crect = cpoint 3.派生类对象指针(或引用)可以赋值给基类对象指针(或引用),反之则不然。此时被赋值的基类对象指针只能访问基类的公有成员,而不能访问派生类中新增的成员。 4.可用类型转换运算符将基类指针显式转换为指向派生类的指针来访问派生类的公有成员 CPoint point, *p_point = &point; //point为基类对象 CRect rect, *p_rect = ▭ //rect为派生类对象 则:p_point = p_rect; //O.K,派生类对象指针赋给基类对象指针 p_rect = p_point; //error,基类对象不能直接赋给派生类对象 p_point->print(); //error, 基类指针不能调用派生类成员函数 ((CRect *)p_point)->print(); //O.K,基类指针转换后可调用派生类成员 函数 在基类中说明虚函数的方法如下: virtual <函数返回类型> <函数名>(<参数表>)

    静态成员函数、内联函数、友元函数和构造函数都不能说明为虚函数。但析构函数可以是虚函数

    只有采用指向基类对象的指针或引用来调用虚函数时,才会按动态联编的方式来调用。 用普通对象来调用虚函数不能实现动态联编。 基类中的虚函数必须具有public或protected访问权限,且派生类必须以公有继承方式从基类派生

    纯虚函数:在基类中没有具体实现的虚函数。 如果基类中包括有纯虚函数,那么**在任何派生类中都必须重定义该函数,**因为它们不能直接使用从基类继承下来的虚函数。

    纯虚函数的一般形式为: virtual <函数返回类型> <函数名>(<参数表>) = 0;

    包含纯虚函数的类称做抽象类。

    由于无法实例化一个含纯虚函数的抽象类,因而不能创建抽象类的对象。

    抽象类不能用作变量类型、函数返回和显式转换的类型,但可定义指向抽象类的指针或引用

    最新回复(0)