递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 5726|回复: 19
打印 上一主题 下一主题

[其它] 如何使用虚拟方法可覆盖重写父类虚函数

[复制链接]

292

主题

2067

帖子

8174

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
8174
QQ
跳转到指定楼层
楼主
发表于 2025-5-18 16:44:27 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 沉默流星 于 2025-5-18 17:29 编辑

问题如下:
  1. #include <iostream>

  2. // 基类 ASD
  3. class ASD {
  4. public:
  5.     // 虚函数 add
  6.     virtual int add(int a, int b) {
  7.         return a + b;
  8.     }

  9.     // 虚析构函数(确保删除派生类对象时不会出现问题)
  10.     virtual ~ASD() {}
  11. };

  12. // 派生类 BB
  13. class BB : public ASD {
  14. public:
  15.     // 重写虚函数 add
  16.     int add(int a, int b) override {
  17.         return a + b + 10;  // 示例:在基类的基础上加10
  18.     }
  19. };

  20. int main() {
  21.     // 使用基类指针指向派生类对象
  22.     ASD* ptr = new BB();

  23.     // 调用重写的 add 函数
  24.     std::cout << "Result: " << ptr->add(5, 3) << std::endl;  // 输出应该是 18 (5+3+10)

  25.     // 释放内存
  26.     delete ptr;

  27.     return 0;
  28. }
复制代码
如何使用@虚拟方法 可覆盖 来重写父类虚函数,然后又如何调用.
说的是封装,使用别名无法使用@虚拟方法。
火山视窗封装视频教程
回复

使用道具 举报

22

主题

290

帖子

1844

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1844
20#
发表于 2025-8-3 00:17:16 | 只看该作者
hcwanz 发表于 2025-8-2 17:47
肯定不行啊, 这个就是为了让火山类可以重写c++类的纯虚代码

不好意思,我没表达清楚。例如下面的这个虚函数是否可以
virtual ACDBCORE2D_PORT void reappended(
    const AcDbObject* dbObj
);

专注于火山视窗AutoCAD、中望CAD、浩辰CAD二次开发
回复

使用道具 举报

76

主题

1244

帖子

5643

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5643
19#
发表于 2025-8-2 17:47:45 | 只看该作者
niuyanbo2021 发表于 2025-8-2 17:37
示例里面说明是 纯虚拟 方法,那么不是纯虚拟方法是否也可以?

肯定不行啊, 这个就是为了让火山类可以重写c++类的纯虚代码
回复

使用道具 举报

22

主题

290

帖子

1844

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1844
18#
发表于 2025-8-2 17:37:21 | 只看该作者
hcwanz 发表于 2025-5-18 18:41
我记的@接口 这个属性就是为了别名封装虚函数搞的吧

示例里面说明是 纯虚拟 方法,那么不是纯虚拟方法是否也可以?
专注于火山视窗AutoCAD、中望CAD、浩辰CAD二次开发
回复

使用道具 举报

460

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
45435
17#
发表于 2025-5-18 22:28:21 | 只看该作者
沉默流星 发表于 2025-5-18 18:46
看文档是,但具体如何整,没看明白

接口自带例子有,可以看看自带例子接口是怎么用的,吴总给了封装案例的。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

292

主题

2067

帖子

8174

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
8174
QQ
16#
 楼主| 发表于 2025-5-18 19:03:45 | 只看该作者
hcwanz 发表于 2025-5-18 18:51
https://bbs.voldp.com/forum.php?mod=viewthread&tid=21779&highlight=%40%E6%8E%A5%E5%8F%A3
我在这里 ...

好的,我研究研究,感谢
火山视窗封装视频教程
回复

使用道具 举报

76

主题

1244

帖子

5643

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5643
15#
发表于 2025-5-18 18:51:38 | 只看该作者
沉默流星 发表于 2025-5-18 18:46
看文档是,但具体如何整,没看明白

https://bbs.voldp.com/forum.php? ... 0%E6%8E%A5%E5%8F%A3
我在这里面照着火山里写的例子说了一下
回复

使用道具 举报

292

主题

2067

帖子

8174

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
8174
QQ
14#
 楼主| 发表于 2025-5-18 18:46:28 | 只看该作者
hcwanz 发表于 2025-5-18 18:41
我记的@接口 这个属性就是为了别名封装虚函数搞的吧

看文档是,但具体如何整,没看明白
火山视窗封装视频教程
回复

使用道具 举报

76

主题

1244

帖子

5643

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5643
13#
发表于 2025-5-18 18:41:59 | 只看该作者
我记的@接口 这个属性就是为了别名封装虚函数搞的吧
回复

使用道具 举报

292

主题

2067

帖子

8174

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
8174
QQ
12#
 楼主| 发表于 2025-5-18 18:37:02 | 只看该作者
Xelloss0618 发表于 2025-5-18 18:35
你没看清楚,对象类是 CVolObject 的别名,CVolObject 里有 GetDumpString 的虚拟方法,所以能用输出名封 ...

这样啊,感谢X大解惑。
火山视窗封装视频教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-9-18 23:07 , Processed in 0.105876 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表