在面向对象的编程中,虚函数或虚方法是一种函数或方法,其行为可以通过具有相同签名的函数在继承类中重写。这个概念是面向对象编程(OOP)的多态性部分中非常重要的一部分。
例如: 结构a { 虚拟void go(){}; }; 结构B:公共A { void go(){}; }; 函数go的隐式覆盖可能是不受欢迎的,因为B :: GO ...
在C ++,在动态结合期间,请考虑以下示例... 班级 { 虚拟void Fun() { cout
<<"Base"; } }; class Derived : public Base { void fun() ...
(C++,MinGW 4.4.0,Windows操作系统) 除了标签 <1> 和 <2> 之外,代码中注释的所有内容都是我的猜测。如果您认为我有错误的地方,请纠正我: A类{ 民众: 虚拟...
为了消除未使用的(普通)功能,我可以使用: -ffunction-sections、-fdata-section 和 --gc-sections。 它有效。 我知道使用多态性,函数是“后期绑定”,所以我想......
是否可以像在 C++ 中那样在 Java 中编写虚拟方法? 或者,是否有一种合适的 Java 方法可以实现来产生类似的行为?我可以举一些例子吗?
大多数人都知道,模板元编程通常比 C++ 中的虚拟分派更快,因为模板的类型是在编译时决定的,而虚拟函数需要运行时查找
在C++中我们可以这样做: 结构体基础 { 虚拟基* Clone() const { ... } 虚拟 ~Base(){} }; 结构派生:基础 { virtual Derived* Clone() const {...} //覆盖 Base::Clone }; 怎么...
我有一个基类,其中有一个纯虚函数,并且通过这个函数,我想在其他派生类中重写它(如果可能的话,在一些具有不同数量参数的类中......
我有下面的代码,我希望 foo 由派生类实现,但由 bar 方法在基类中使用。但我需要 foo 来处理两种情况,其中输入之一和输出类型......
我在尝试了解有关 LSP 的更多信息时遇到了这个示例,我是 OOP 世界的新手。你可以在例子后面找到我的问题。示例如下。 在数学中,正方形是
(this->*&A::main)(); 有什么区别?和 this->A::main();在C++中处理虚函数时?
我试图理解在 C++ 中调用函数的两种方式之间的区别,特别是在处理虚函数时。这是一个简单的代码示例: #包括 类...
(this->*ptr)(); 有什么区别和 this->A::main();在C++中处理虚函数时?
我试图理解在 C++ 中调用函数的两种方式之间的区别,特别是在处理虚函数时。这是一个简单的代码示例: #包括 类...
当基类在析构时需要知道派生类的信息时,如何避免在析构函数中调用虚函数?
目前我遇到以下情况: 我有一个带有 void* V 成员的基类 Base,实际上可能是 A*、B*、C*,并且三个(只有三个,固定数量)类类别将从
当基类在析构时需要知道派生类的信息时,如何避免在析构函数中调用虚函数?
目前我遇到以下情况: 我有一个带有 void* V 成员的基类 Base,实际上可能是 A*、B*、C*,并且类的三个(只有三个,固定数量)类别将从
我试图了解 C++ 如何在继承上下文中处理成员函数指针和重载解析。我有一个带有纯虚函数的基类和一个派生类。我已经
Sean Parent:对于继承层次结构中的多态类型,拥有可变对象是极端的例外
我想知道肖恩·帕伦特到底是什么意思 通过这个声明 对于继承层次结构中的多态类型,拥有可变对象是极端的例外...... 他接着提到了两个原因...
我在 C++ 中有一个场景,我通过基类指针访问派生类的私有成员,并且它似乎工作正常,没有任何错误。这是代码的简化版本: #包括...
为什么具有虚拟成员的类的“新放置”仅在缓冲区位于本地堆栈上时才起作用?
我有一些 C++ 代码,它使用 Placement New 运算符在现有缓冲区中创建具有虚拟成员的类的实例。当缓冲区位于...的本地堆栈上时,它会按预期工作
我试图理解带有指针和虚函数的派生类是如何工作的。我想要做的是使用基类中的虚函数,以便它采用类类型的指针...