成员函数被调用派生类对象!
来源:互联网 发布:专业现场音控软件 编辑:程序博客网 时间:2024/06/06 03:51
这是因为在基地没有getvalue()功能。getvalue()属于衍生。因为派生是一个基础,派生出的东西在基。然而,基地没有获得任何东西,在派生。
重新定义功能
当一个成员函数被调用派生类对象时,编译器首先会查看该成员是否存在于派生类中。如果没有,它开始走上继承链,检查该成员是否已被定义在继承的类中。它使用的第一个,它发现。
当cderived。identify()被调用时,编译器看看identify()被派生类中定义的。它没有。然后,它开始在继承的类(在这种情况下是基础)。库定义了一个identify()功能,因此使用一个。换句话说,基地::identify()是因为来源::identify()不存在。
然而,如果我们定义的派生::在派生类中identify(),它会被用来代替。这意味着我们可以使功能不同与我们的派生类重新定义他们在派生类!
在我们上面的例子,如果cderived更准确。identify()印有“我是一个来自“。让我们修改identify()因此返回正确的响应时,我们称identify()与派生类对象。
要修改在派生类中定义的基类中定义的函数的函数,只在派生类中重新定义函数。
重新定义功能
当一个成员函数被调用派生类对象时,编译器首先会查看该成员是否存在于派生类中。如果没有,它开始走上继承链,检查该成员是否已被定义在继承的类中。它使用的第一个,它发现。
因此,看看下面的例子:
345678910int main(){ Base cBase(5); cBase.Identify(); Derived cDerived(7); cDerived.Identify() return 0;}
当cderived。identify()被调用时,编译器看看identify()被派生类中定义的。它没有。然后,它开始在继承的类(在这种情况下是基础)。库定义了一个identify()功能,因此使用一个。换句话说,基地::identify()是因为来源::identify()不存在。
然而,如果我们定义的派生::在派生类中identify(),它会被用来代替。这意味着我们可以使功能不同与我们的派生类重新定义他们在派生类!
在我们上面的例子,如果cderived更准确。identify()印有“我是一个来自“。让我们修改identify()因此返回正确的响应时,我们称identify()与派生类对象。
要修改在派生类中定义的基类中定义的函数的函数,只在派生类中重新定义函数。
12345678910111213class Derived: public Base{public: Derived(int nValue) :Base(nValue) { } int GetValue() { return m_nValue; } // Here's our modified function void Identify() { cout << "I am a Derived" << endl; }};
0 0
- 成员函数被调用派生类对象!
- 使用派生类对象通过成员函数指针调用基类虚函数之不可能性的证明
- 派生类对象成员函数与基类成员函数的重载
- C++基类成员函数访问派生类对象的基类成员问题
- C++如何在派生类成员函数内调用基类的成员函数(包括构造函数)
- C++中基类,派生类 类成员对象的构造函数,析构函数的顺序
- 抽象类 纯虚函数 虚函数 派生类 派生类对象 基类对象 ——调用顺序,用基类调用派生类的方法
- 基类派生类构造析构函数调用顺序、成员初始化和销毁顺序
- 关于派生类拷贝构造函数中使用基类私有类对象成员的问题
- 派生类的成员有基类子对象时构造函数的总结
- 例4.9 含有多个对象成员的派生类构造函数的执行顺序
- 构造函数的执行顺序---派生类构造函数 and 父类构造函数 and 成员对象构造函数
- C++虚函数的陷阱--派生类对象的基类函数调用基类虚函数出错
- 定义一个哺乳动物Mammal类,再由此派生出狗Dog类,二者都定义 Speak()成员函数,基类中定义为虚函数,定义一个Dog类的对象,调用Speak函数,观察运行结果
- 声明一个哺乳动物类Mammal,再由此派生出狗类Dog,二者都定义Speak()成员函数,基类中定义为虚函数,声明类Dog的一个对象,调用函数Speak()
- 内嵌子对象时派生类构造函数与析构函数的调用顺序
- 【c++继承】继承关系中派生类对象构造函数和析构函数调用顺序
- 类成员函数调用
- C# Window编程随记——第三方读取Excel表格数据的插件(NPOI.dll)
- OpenCV基于局部自适应阈值的图像二值化
- vmware 不支持opengl
- plsql developer 登陆失败,不能初始化 oci.dll 你确定已经安装了32位
- 通过自定义控件展示矩阵的几何变换
- 成员函数被调用派生类对象!
- 本地环境 XAMPP+phpStorm+XDebug+chrome 配置和断点调试
- HDU 4052 Adding New Machine (线段树)
- 使用enable_shared_from_this
- java.lang.IllegalStateException: getAttribute: Session already invalidated
- dbx使用方法
- opencv mat 图像灰度化
- the binary file '***.o' is not permitted
- 3.数据结构之通用编程思想的引入