网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月05日
漏签
0
天
c++吧
关注:
551,681
贴子:
2,093,549
看贴
图片
吧主推荐
游戏
19
回复贴,共
1
页
<<返回c++吧
>0< 加载中...
大佬们帮看看两种写法的利弊
只看楼主
收藏
回复
Mr.Trump
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
登录函数
图一是用继承+虚函数 Identity是抽象基类,通过if-else将父类指针指向不同子类,分别调用子类函数
图二是我写的,通过if-else直接创建相应的对象,调用不同函数
搞不明白为什么要用虚函数,感觉图二也可以啊,虚函数的好处还是搞不明白
回帖失败🥺
||
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
虚函数可以重载,调用的人不需要知道你究竟是老师还是学生,只要你是个人就能调
贴吧用户_02GGNyZ
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
继承共同父类你就可以把teacher和student都存成identity,用到虚函数时会根据实际的类别找到重写的函数。
比如老师和学生在同一个名单里时,就可以用一个数组vector<identity*>保存,当需要获取它们的信息时,虽然老师和学生获取的信息不一样,但如果使用虚函数声明了getData()方法,就可以直接遍历这个数组里的元素,调用它的getData()。如果没有共同父类和虚函数,这个实现就会非常丑陋
起始在何处
||
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
设计问题建议问哲学吧的人。
aikogrgushdhka
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
不觉得ifelse很不优雅吗
星井美希
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
虚函数可以做到抽象和实现的解耦
比如像这样的场景,这样任何类的对象如果需要能够作为func函数的参数传入时,只需要继承base类,并且实现play函数即可
class base {
public:
virtual void play() = 0;
};
void func(base *obj) { obj->play(); }
Waaaaf
^
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在需要多态的场合,优先考虑std::variant以实现编译时多态,除非:实现类大小差距大;实现类的数量不确定。
如果只是要求某一对象具有特定实现,考虑使用concept作约束。
匆付
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
虚函数的目的是让相同的静态代码在运行期能够调用不同的代码。这个世界,很多时候有很多过程具有一样的接口调用结构,所以用相同的逻辑顺序来描述。只是具体细节不同。举例,大多数人都是睡觉吃饭睡觉吃饭,但具体每个人又有所区别。
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示