如何使用虚拟方法可覆盖重写父类虚函数
本帖最后由 沉默流星 于 2025-5-18 17:29 编辑问题如下:
#include <iostream>
// 基类 ASD
class ASD {
public:
// 虚函数 add
virtual int add(int a, int b) {
return a + b;
}
// 虚析构函数(确保删除派生类对象时不会出现问题)
virtual ~ASD() {}
};
// 派生类 BB
class BB : public ASD {
public:
// 重写虚函数 add
int add(int a, int b) override {
return a + b + 10;// 示例:在基类的基础上加10
}
};
int main() {
// 使用基类指针指向派生类对象
ASD* ptr = new BB();
// 调用重写的 add 函数
std::cout << "Result: " << ptr->add(5, 3) << std::endl;// 输出应该是 18 (5+3+10)
// 释放内存
delete ptr;
return 0;
}如何使用@虚拟方法 可覆盖 来重写父类虚函数,然后又如何调用.
说的是封装,使用别名无法使用@虚拟方法。
就这样啊,和你给的案例差不多,设置虚拟方法标记就行了。
<火山程序 类型 = "通常" 版本 = 1 />
类 类1
{
方法 方法1 <公开 类型 = 整数 @虚拟方法 = 可覆盖>
参数 a <类型 = 整数>
参数 b <类型 = 整数>
{
返回(a+b)
}
}
类 类2 <基础类 = 类1>
{
方法 方法1 <公开 类型 = 整数 @虚拟方法 = 可覆盖>
参数 a <类型 = 整数>
参数 b <类型 = 整数>
{
返回 (父对象.方法1 (a, b) + 10)// 调用基础类中的被覆盖虚拟方法
}
}
调用就更简单了,直接常规方式调用就行了。。
<火山程序 类型 = "通常" 版本 = 1 />
方法 我的主窗口_创建完毕 <接收事件 类型 = 整数>
参数 来源对象 <类型 = 我的主窗口>
参数 标记值 <类型 = 整数>
{
变量 类 <类型 = 类2>
调试输出 (类.方法1 (1, 2))
返回 (0)
}
创世魂 发表于 2025-5-18 17:05
调用就更简单了,直接常规方式调用就行了。。
我说的不是仿写,而是封装 本帖最后由 Xelloss0618 于 2025-5-18 17:41 编辑
设置输出名和 @视窗.后缀文本 "override"不过你说别名的话,这本来就无法封装的,别名是直接引用C++类,你就算要覆盖虚拟方法,也是C++代码那边把子类写好了再封装给火山。
Xelloss0618 发表于 2025-5-18 17:39
设置输出名和 @视窗.后缀文本 "override"不过你说别名的话,这本来就无法封装的,别名是直接引用C++类,你 ...
不使用别名,如何封装呢 沉默流星 发表于 2025-5-18 17:43
不使用别名,如何封装呢
上面说了,设置输出名 Xelloss0618 发表于 2025-5-18 17:47
上面说了,设置输出名
好像不行啊他需要返回值
沉默流星 发表于 2025-5-18 17:55
好像不行啊他需要返回值
你没写return啊……还有禁止流程检查。
而且你这个完全不需要写输出名和后缀文本。
只有继承了父类,才需要写输出名,你可以参考 扩展对象类 Xelloss0618 发表于 2025-5-18 18:24
你没写return啊……还有禁止流程检查。
而且你这个完全不需要写输出名和后缀文本。
只有继承了父类,才需 ...
扩展对象类 不对啊.他继承自对象类。但对象类中没有展示内容函数。他怎么能加override
static/image/hrline/1.gif
我加为啥不行呢.
页:
[1]
2