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

广东石油化工建设集团网站湖南湘江新区最新消息

广东石油化工建设集团网站,湖南湘江新区最新消息,宠物网站开发与实现结论,推广图片发布混淆信息1. final 关键字 a. 用途 final 关键字用于两个方面: 修饰类:防止类被继承。修饰虚函数:防止虚函数被重写(覆盖)。 b. final 修饰类 当一个类被声明为 final,它就不能被继承。也就是说,任何…

1. final 关键字

a. 用途

final 关键字用于两个方面:

  1. 修饰类:防止类被继承。
  2. 修饰虚函数:防止虚函数被重写(覆盖)。
b. final 修饰类

当一个类被声明为 final,它就不能被继承。也就是说,任何继承该类的尝试都会导致编译错误。

class A {
public:void func() {}
};class B : public A {}  // 合法继承class C final : public A {};  // C 类不能被继承class D : public C {}  // 编译错误:无法继承自 'final' 类
  • 总结:当你希望一个类不被继承时,可以使用 final 来标记该类。
c. final 修饰虚函数

final 用于虚函数时,它表示该函数不能在子类中被重写(覆盖)。

class A {
public:virtual void func() final {std::cout << "A's func" << std::endl;}
};class B : public A {
public:void func() override {  // 编译错误:无法重写 A 中的 final 函数std::cout << "B's func" << std::endl;}
};
  • 总结final 关键字用于标记虚函数,防止它在派生类中被重写。这样可以确保父类中的实现不可被更改。

2. override 关键字

a. 用途

override 用于标记子类中的虚函数,明确表示该函数是用来重写父类的虚函数的。这个关键字可以帮助编译器进行更多的检查,以确保子类中的函数确实覆盖了父类的虚函数。

b. 使用场景

当子类重写父类的虚函数时,使用 override 来明确标识。这不仅是为了可读性,还能帮助编译器检查是否真的有虚函数被重写。

class A {
public:virtual void func() {std::cout << "A's func" << std::endl;}
};class B : public A {
public:void func() override {  // 使用 override 明确表示是重写父类的虚函数std::cout << "B's func" << std::endl;}
};
c. 编译器检查

如果子类的函数没有正确重写父类的虚函数(例如,函数签名不同),编译器会给出错误提示。

class A {
public:virtual void func(int val) {std::cout << "A's func" << std::endl;}
};class B : public A {
public:void func() override {  // 错误:函数签名不匹配,编译器会给出提示std::cout << "B's func" << std::endl;}
};
  • 总结:使用 override 关键字确保子类中的虚函数正确覆盖了父类的虚函数。如果签名不匹配或其它原因不能覆盖,编译器会报错。

3. finaloverride 配合使用

这两个关键字可以一起使用。例如,你可以在子类中声明一个虚函数为 override,并在父类中标记一个虚函数为 final,这样就禁止了子类进一步的重写。

class A {
public:virtual void func() final {  // 不能被重写std::cout << "A's func" << std::endl;}
};class B : public A {
public:void func() override {  // 错误:父类函数是 final,不能重写std::cout << "B's func" << std::endl;}
};

总结

  • final 用来禁止继承或者禁止重写虚函数。用于类时防止继承,用于函数时防止重写。
  • override 用来明确标识子类函数是重写父类的虚函数,它能帮助编译器检查函数是否正确覆盖了父类的虚函数。

如果你在编码时使用这两个关键字,不仅可以提升代码的安全性和清晰度,还能减少潜在的错误,确保继承和重写的正确性。

http://www.dtcms.com/wzjs/554081.html

相关文章:

  • 做宣传网站要多少钱机器人网站建设
  • 网站优化软件排名器比较厉害的网站制作公司
  • 重庆城市建设网站用python导入wordpress
  • 建正建设官方网站中国核工业第五建设有限公司待遇怎么样
  • 做网站青岛珠海网站建设专业公司
  • 专业手机网站建设价格明细表效果图设计费收费标准
  • 汉阳做网站龙岗网站建
  • 怎么建立一个网站好邢台123今天最新招聘
  • 物流网个人网站建设外贸网网站建设
  • 做外贸网站如何thinkphp集成wordpress
  • 高端建站行业百度竞价和优化的区别
  • html5静态网页制作合肥品牌seo
  • 贵港网站制作深圳微信网站制作
  • 备案网站可以做卡盟么重庆垫江网站建设
  • 安徽省建设干校学校网站如何建设公众平台网站
  • 个人怎么做网站推广有没有网站建设的教程
  • 虚拟空间怎么做网站目录指向做网站需要学什么软件
  • 电子商城平台网站建设邯郸住房及城乡建设部网站
  • 公司优化网站的案例企业文化 设计 咨询
  • 网页和网站的不同个性化wordpress
  • 抚州做网站公司哪家好甘肃兰州大学
  • 山东外贸行业网站开发网站续费文档
  • 骏域网站建设专家东莞创建属于自己的网站
  • 建设厅焊工证查询网站给浏览器加速的加速器
  • 网站建设维护的相关基本知识家乡网站建设
  • 个人网站设计内容seo诊断分析在线工具
  • 深圳市住房和城乡建设部网站软件定制开发的发展前景
  • 网络公司 开发网站深圳网站设计设计
  • 手机做网站视频成都网站建设优化公司电话
  • 手机网站背景图尺寸免费软件推荐