社区
C++ 语言
帖子详情
重载基类函数的问题
csdn_tw
2005-12-29 10:34:22
有没有办法在派生类中重载基类中声明的一个方法,该方法在基类的protected中声明,但不是虚函数
...全文
227
9
打赏
收藏
重载基类函数的问题
有没有办法在派生类中重载基类中声明的一个方法,该方法在基类的protected中声明,但不是虚函数
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
csdn_tw
2005-12-30
打赏
举报
回复
这么多热心人,谢谢大家.
对,应该是覆盖,不能叫重载,实际上我用的是DELPHI的VCL类库中的一个控件类作为基类,派生出我自己的控件类,而且在派生类中已经声明了同名函数,而且参数类型和位置都与基类一样,但跟踪调试发现,代码还是运行基类中的函数代码,所以才想起请教大家,看看是什么问题,谁还能帮忙分析一下?
sankt
2005-12-29
打赏
举报
回复
有没有办法在派生类中重载基类中声明的一个方法,该方法在基类的protected中声明,但不是虚函数
//=============
一、覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual关键字。
二、"隐藏"是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。
ericqxg007
2005-12-29
打赏
举报
回复
恩 同意sanhill() 的说法 这正是所说的覆盖 不是重载
sanhill
2005-12-29
打赏
举报
回复
自己重新在派生类中改写一遍那个成员函数就好了,派生类的成员函数会覆盖父类的非虚同名函数的,正好达到你要的效果嘛
csdn_tw
2005-12-29
打赏
举报
回复
忘说一句,这个方法在基类中被基类的私有函数调用,我想把这个方法在派生类中重新实现,使派生类的实例在运行时执行我写的代码
cunsh
2005-12-29
打赏
举报
回复
class A{
protected:
void func(){}
};
class B: public A{
protected:
A::func; ///////
再写你要重载的func.
SuperXu_swjtu
2005-12-29
打赏
举报
回复
上面例子里面:
基类的私有函数vcallProtected()调用了保护函数vgetValue(),然后在构造函数中又调用了私有函数vcallProtected()输出值;
而派生类重写了vgetValue()函数,在构造函数中调用,我觉得应该实现了你说的要求了。
SuperXu_swjtu
2005-12-29
打赏
举报
回复
#include<iostream>
#include<string.h>
using namespace std;
class Base{
public:
Base(const int b);
~Base()
{
cout << "~Base()" << endl;
}
protected:
int getValue()
{
return bValue;
}
private:
int bValue;
void callProtected()
{
cout << "call Protected function: " << getValue() << endl;
}
};
Base::Base(const int b = 0) :bValue(b)
{
cout << "Base()" << endl;
callProtected();
}
class Derived : public Base{
public:
Derived(const int d);
~Derived()
{
cout << "~Derived()" << endl;
}
int getValue()
{
cout << "Derived getValue()" << endl;
return 10;
}
private:
int di;
};
Derived::Derived(const int d) : Base(3), di(d)
{
cout << "Derived()" << endl;
cout << getValue() << endl;
}
int main()
{
Base b(2);
cout << endl;
cout << endl;
Derived d(3);
return 0 ;
}
好像实现了你说的要求,但是可以看出基类中的getValue()已经被隐藏了!
snowred_bai
2005-12-29
打赏
举报
回复
不能用virtual关键字的话,那只有用静态连编了。
可以定义派生类的函数与基类的函数同名,并且参数也相同,这样的话,可以满足你的要求。
多式联运基于AFO算法、GA和PSO算法求解不确定多式联运路径优化
问题
,同时和MATLAB自带的全局优化搜索器进行对比(Matlab代码实现)
内容概要:本文围绕不确定环境下的多式联运路径优化
问题
展开研究,提出并实现了基于AFO算法、遗传算法(GA)和粒子群优化算法(PSO)的三种智能优化方法,并借助Matlab平台完成算法编程与仿真。研究构建了考虑时间、成本、转运风险等多重不确定因素的路径优化模型,系统比较了AFO、GA、PSO三种算法在收敛速度、全局寻优能力和稳定性方面的表现,同时引入Matlab自带的全局优化搜索器作为基准对照,深入分析各算法在复杂物流网络中的适用边界与性能差异。研究表明,AFO算法在解决此类组合优化
问题
时展现出更快的收敛效率和更强的局部规避能力。; 适合人群:具备一定Matlab编程基础与运筹优化知识,从事物流工程、交通运输规划、智能算法开发等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于多式联运、综合货运网络中的路径决策支持系统构建;②为不确定性条件下复杂路径规划
问题
提供智能算法选型依据与技术实现方案;③支持科研人员复现主流优化算法并开展横向性能对比实验,推动算法改进与实际落地。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析算法实现流程,重点理解目标
函数
设计、约束条件处理及参数敏感性分析部分,可通过调整
问题
规模与算法参数进行对比实验,进一步拓展至动态路径规划或大规模网络优化等延伸场景。
政府科技管理者如何利用区域科技创新数智大脑进行精准招商?_1.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
产业园区运营负责人如何借助科技数智大脑实现招商精准化?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
高校技术转移办公室人员如何借助科技创新大脑打通产学研合作?.docx
高校技术转移办公室人员如何借助科技创新大脑打通产学研合作?
【水下机器人建模】基于QLearning自适应强化学习PID控制器在AUV中的应用研究(Matlab代码实现)
内容概要:本文研究了基于QLearning自适应强化学习的PID控制器在自主水下航行器(AUV)运动控制中的应用,通过Matlab代码实现了控制算法的仿真验证。该方法融合强化学习的在线自适应能力与传统PID控制的稳定性优势,利用QLearning算法动态优化PID控制器的比例、积分、微分参数,以应对水下复杂流体环境、模型不确定性及外部干扰等挑战,从而提升AUV轨迹跟踪的精度、鲁棒性与动态响应性能。文中系统阐述了AUV的六自由度非线性动力学建模过程、QLearning算法的状态空间与动作空间设计、奖励
函数
构造及训练机制,并详细说明了PID参数自整定的闭环控制架构。仿真结果表明,相较于传统固定参数PID控制器,该智能控制策略在多种工况下均展现出更优的控制效果,有效抑制了超调,加快了响应速度,并增强了抗干扰能力。; 适合人群:具备自动控制理论、强化学习基础及Matlab/Simulink仿真能力,从事水下机器人、智能控制、海洋工程、自动化等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于AUV、UUV等无人水下平台的高精度自主导航与运动控制;②为解决非线性、强耦合、时变系统的控制器参数自适应整定
问题
提供智能化解决方案;③作为强化学习与经典控制理论深度融合的技术范例,推动智能控制算法在海洋装备中的工程化应用。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节,重点剖析QLearning的状态-动作-奖励机制设计、PID参数更新逻辑及仿真对比实验结果,有条件者可在更复杂的动力学模型或实际硬件平台上进一步验证与优化算法性能。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章