当前位置: 首页 > 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.15wanjia.com/news/189134.html

相关文章:

  • 重庆公司网站 技术支持广州 深圳 外贸网站建设
  • 深圳福田区住房和建设局网站深圳做网站推广优化
  • 东莞网站建设牛魔网awordpress 需要连接ftp
  • jsp做网站的流程宁波seo快速优化怎么做
  • seo门户 site百度seo运营工作内容
  • 企业建立网站主要包括那些流程WordPress模板首页文件是啥
  • 临安网站建设电子菜单制作app
  • 做网站的公司利润网站开发 竞拍网站
  • 免费网站模板之家建筑工程管理局官网
  • 汕头做网站公司wordpress redis
  • 邯郸手机网站建设百度指数分析案例
  • 做家教需要什么哪个网站的会员广州网站优化工具服务
  • 扒下来的网站怎么做修改wordpress编辑器软件
  • 黄江镇网站建设公司wordpress如何设置商城
  • 东莞网站建设全过程idstore wordpress
  • 网站建设功能设计北京外贸营销网站建设费用
  • 石龙镇网站建设公司京东网页设计教程
  • 东莞网站推广策划活动黄骅港客运站电话号码
  • 学网站开发的培训学校重庆seo俱乐部
  • 电子商务网站的建设心得体会福泉市建设局网站
  • 哪些网站做任务可以赚钱全国新农村建设中心网站
  • 网站开发如何进行管理百度用户服务中心人工电话
  • 北京做网站费用虚拟主机专用控制面板
  • 购物网站建设市场调查论文怎么做app推广代理
  • 福建泉州做淘宝的拿货什么网站网站建设中数据字典
  • 做网站什么一级导航二级导航wordpress 登录用户名密码
  • 医院网络建设湖州seo排名
  • 某物流网站后台源码中国建设银行网站企业
  • 网站建设丨金手指排名15外贸建站哪家
  • 万网买的网站备案搭建一个商城需要多少钱