在面向对象的编程中,虚函数或虚方法是一种函数或方法,其行为可以通过具有相同签名的函数在继承类中重写。这个概念是面向对象编程(OOP)的多态性部分中非常重要的一部分。
在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 运算符在现有缓冲区中创建具有虚拟成员的类的实例。当缓冲区位于...的本地堆栈上时,它会按预期工作
我试图理解带有指针和虚函数的派生类是如何工作的。我想要做的是使用基类中的虚函数,以便它采用类类型的指针...
#包括 使用命名空间 std; 类字符{ 私人的: 民众: 字符(字符串 n,int h,int a){ } 虚拟 int getHealth() = 0; 虚拟 int getAttack() = 0; 虚拟...
下面的代码中,为什么Parent的大小和Child的大小相同(尽管Child添加了一个成员变量)?另一个奇怪的行为:如果我注释掉定义 b 的行,...
这是我本来想写的代码: A类{ 民众: A(someType someData) { this->init(someData); } 虚拟无效 init(someType) = 0; } 这是不允许的,b...
从 Rust 调用 C++ 虚拟方法即使在成功执行后也会引发访问冲突错误
我正在尝试从 Rust 调用 C++ 对象的虚拟方法。我正在获取输出,但执行此方法后,它会引发异常。 testvirtual.e 中 0x00000001 处未处理的异常...
我知道在提出这个问题之前,这里已经介绍了虚拟继承,我详细介绍了虚拟继承,并详细介绍了类似问题的详细信息,例如
为什么两段代码都加上-visibility=hidden,普通函数编译错误,而虚函数编译正确?
我正在阅读此页。 我按照答案逐步进行测试,还添加 -fvisibility=hidden 以使所有符号隐藏,然后我扩展了答案中的代码。 //矩形.h #pragma on...
C++ 允许使用 virtual 关键字定义成员函数的默认行为,但是如果我想扩展成员函数以执行附加功能怎么办?例如,我有以下...