当前位置: 首页 > news >正文

定制网站系统开发杭州优化公司多少钱

定制网站系统开发,杭州优化公司多少钱,模板小程序多少钱,瓜果蔬菜做的好的电商网站文章目录 条款33:避免遮掩继承而来的名称为什么避免遮掩?如何避免遮掩?1. 使用 using 声明式2. 使用转交函数 (Forwarding Functions) 总结 条款33:避免遮掩继承而来的名称 在 C 中,派生类(derived class&…

文章目录

    • 条款33:避免遮掩继承而来的名称
      • 为什么避免遮掩?
      • 如何避免遮掩?
        • 1. 使用 `using` 声明式
        • 2. 使用转交函数 (Forwarding Functions)
      • 总结

条款33:避免遮掩继承而来的名称

在 C++ 中,派生类(derived class)内的名称会覆盖基类(base class)内的名称。这种行为通常被称为“遮掩”。在公共继承(public inheritance)中,通常不希望这种遮掩发生,因为它会导致基类的成员变得不可访问,这可能会使代码难以理解和维护。

为什么避免遮掩?

  1. 名称冲突:当派生类重定义了与基类相同的名称时,基类的成员将变得不可访问。这种现象可能会导致程序中的行为异常或意外错误。

  2. 降低可维护性:开发者可能不清楚在派生类中覆盖的成员是基类的成员还是派生类新定义的成员,导致理解代码时增加难度。

  3. 破坏继承契约:公有继承应该表现出“is-a”关系,派生类应作为基类的扩展。如果派生类覆盖了基类的成员,可能会破坏这种继承关系。

如何避免遮掩?

为了让基类中的成员不被遮掩并能够重新访问,可以使用以下方法:

1. 使用 using 声明式

可以使用 using 声明式将基类中的成员引入派生类,使得它们可以被访问。这样,派生类中的名称将不会覆盖基类的名称。

class Base {
public:void func() { std::cout << "Base func\n"; }
};class Derived : public Base {
public:using Base::func;  // 引入 Base 中的 func 函数void func(int x) { std::cout << "Derived func " << x << "\n"; }
};int main() {Derived d;d.func();       // 调用 Base::funcd.func(10);     // 调用 Derived::func
}

在上面的例子中,Derived 类通过 using Base::func; 语句引入了基类中的 func() 函数,这样就能同时使用派生类和基类的同名函数。

2. 使用转交函数 (Forwarding Functions)

当派生类中有同名函数时,如果你希望让基类的成员在派生类中保持可访问性,可以在派生类中编写转交函数,将请求转发到基类的实现。

class Base {
public:void func() { std::cout << "Base func\n"; }
};class Derived : public Base {
public:void func() { Base::func(); }  // 转交基类的 func
};int main() {Derived d;d.func();  // 调用 Base::func
}

在这个例子中,Derived 类的 func() 函数将调用 Base::func(),从而确保基类的成员函数仍然可用。

总结

  • 避免遮掩:在公有继承中,派生类不应遮掩基类的成员。如果必须使用同名成员,确保能够访问基类的成员。
  • 使用 using 声明式:可以通过 using 声明式引入基类成员,避免它们被遮掩。
  • 使用转交函数:通过转交函数将基类的成员调用转发到派生类,确保基类的接口仍然可访问。

遵守这一条款,可以提高代码的可读性、可维护性,并减少因遮掩带来的潜在错误。

http://www.shuangfujiaoyu.com/news/57576.html

相关文章:

  • 2018年做淘宝客网站还能挣钱吗网址大全浏览器主页
  • 遵化市有做奇麟网站的吗网站不收录怎么办
  • 做网站和做免费推广网站的区别线上推广平台
  • 网站怎么产品做推广兰州seo技术优化排名公司
  • 2015微信网站设计视频号推广方法
  • 网站广告条动画 怎么做网站快速排名优化价格
  • 棋牌网站开发需要多少钱律师网络推广
  • 网站建设报价清单石家庄网络推广优化
  • 网站设计的原则有哪些网店运营工资一般多少
  • 做网站哪家好哪家好公众号软文素材
  • 网站价值排行百家联盟推广部电话多少
  • 想自己做淘宝有什么网站吗seo推广方案
  • 海淀区网站建设seo必备工具
  • 网站备案号怎么看滨州网站seo
  • wordpress加cdn如何快速优化网站排名
  • 做网站建设挣钱吗百度推广是干什么的
  • 长春移动端网站设计今日新闻头条最新消息
  • 浦江县建设局网站完整的社群营销方案
  • 长沙网站搭建seo信息流广告优化师培训
  • 用php做的网站软件网络营销案例分析论文
  • 做网站一般需要多少钱品牌营销策划
  • 网站建设项目实训报告房地产销售
  • 个人网站做多久有效果seo搜索是什么意思
  • 新疆昌吉市建设委员会网站代发qq群发广告推广
  • 广州市政府网站建设与管理规范爱站官网
  • 设计公司网站源码下载商品推广软文范例300字
  • 无为县做互联网网站软件注册推广平台
  • 网站外链建设工作计划营销的三个基本概念是什么
  • behance设计网站中有名的设计师怎么找拉新推广平台
  • 域名还没备案可以做网站吗杭州seo渠道排名