[C++11]final关键字的使用

C++中增加了final关键字来限制某个类不能被继承,或者或个虚函数不能被重写,和java的final关键字的功能是类似的。如果使用final修饰函数,只能修饰虚函数,并且要把final关键字放到类或者函数的后面。

1.如果使用final修饰函数,只能修饰虚函数,这样就能阻止子类重写父类的这个函数了。

代码如下:

#include <iostream>
using namespace std;class Base
{
public:virtual void test(){cout << "Base class..." << endl;}
};class Child :public Base
{
public:void test() final{cout << "Child class..." << endl;}
};class GrandChild :public Child
{
public:void test()/*error 因为Child的test()被final修饰,所以它的子类已经不能重写这个函数了。*/{cout << "GrandChild class..." << endl;}
};

2.使用final关键字修饰过的类是不允许被继承的,也就是说这个类不能有派生类。

代码如下:

#include <iostream>
using namespace std;class Base
{
public:virtual void test(){cout << "Base class..." << endl;}
};class Child final:public Base
{
public:void test() {cout << "Child class..." << endl;}
};class GrandChild :public Child//error 不能将final类型的类作基类
{
public:void test(){cout << "GrandChild class..." << endl;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sql Server之旅——第一站 那些给我们带来福利的系统视图

本来想这个系列写点什么好呢&#xff0c;后来想想大家作为程序员&#xff0c;用的最多的莫过于数据库了&#xff0c;但是事实上很多像我这样工作在一线的码农&#xff0c;对sql 都一知半解&#xff0c;别谈优化和对数据库底层的认识了&#xff0c;我也是这样。。。一&#xff1…

c语言case怎么输入字母,如何使用switch case语句将字母转换为数字

我正在制作黑色插口游戏&#xff0c;并且需要使用switch case语句将A转换为11&#xff0c;将T&#xff0c;Q&#xff0c;J和K转换为10&#xff0c;但是我不确定如何执行代码。有人会帮助我解决这个问题吗&#xff1f;如何使用switch case语句将字母转换为数字到目前为止&#x…

JAVA JDBC连接mysql编程

JDBC连接mysql编程 基本操作 package jdbc;import java.sql.Statement; import java.util.Scanner; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet;public class test {public static void main(String[] args) throws Exception {…

[C++11]继承构造函数

C11中提供的继承构造函数可以让派生类直接使用基类的构造函数&#xff0c;而无需自己再写构造函数&#xff0c;尤其是在基类有很多构造函数的情况下&#xff0c;可以极大地简化派生类构造函数的编写。 先来看没有继承构造函数之前的处理方式: 代码如下: #include <iostrea…

.NET 程序员的 Playground :LINQPad

如果想执行一个简单的 C# 语句并获得运行结果&#xff0c;通常我们需要做几个步骤才能达成&#xff1a;打开 Visual Studio 并新建一个控制台项目。在 Program.cs 中编写代码并保存。点击运行按钮或者 F5 运行程序并查看结果。通常来说这并不会产生问题。但如果你和笔者一样为 …

c语言表达式5 gt 3 gt 1,C语言题目谁会做?

1.为表示关系X>y>z&#xff0c;应使用C语言表达式________2.选择题&#xff1a;C语言中&#xff0c;函数返回值的类型是&#xff1a;_____A。return语句中的表达式的类型。B。主调函数中指定的类型。C。定义函数时所指定的函数类型。D。函数调用时系统随机指定的类型3.1.…

JAVA 点菜系统数据库课程设计

点菜系统数据库课程设计 效果图 数据库建表 CREATE TABLE OrderDish (orderid int not null,money int,primary key(orderid) );CREATE TABLE Dish (id varchar(20) not null,name nchar(10),price int,type nchar(10),primary key(id) ); insert into Dish values(zhushi0,水…

[C++11]委托构造函数

委托构造函数允许使用同一个类中的一个构造函数调用其他的构造函数&#xff0c;从而简化相关变量的初始化。 注意点: 1.这种链式的构造函数调用不能形成一个闭环(死循环)&#xff0c;否则会在运行期抛异常。 2.如果要进行多层构造函数的链式调用&#xff0c;建议将构造函数的…

基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目

首先&#xff0c;默认咱们已经有了.net core 3.1的开发环境&#xff0c;如果你没有&#xff0c;快去下载... https://dotnet.microsoft.com/download由于项目是基于abp vNext开发的&#xff0c;所以开发之前建议去撸一遍abp官方文档&#xff0c;https://docs.abp.io/en/abp/lat…

c语言常见错误代码释义,C语言常见错误代码释义解析.doc

C语言常见错误代码释义解析C语言常见错误代码释义错误代码及错误信息 错误释义error 1: Out of memory 内存溢出error 2: Identifier expected 缺标识符error 3: Unknown identifier 未定义的标识符error 4: Duplicate identifier 重复定义的标识符error 5: Syntax error 语法错…

JAVA Java多线程与并发库

Java多线程与并发库 同步方式 import javax.xml.stream.events.StartDocument;public class TestSynchronized {public static void main(String[] args) {// TODO Auto-generated method stubTestSynchronized test new TestSynchronized();test.init();}void init() {fina…

[C++11]统一的数据初始化方式 - 初始化列表

关于C中的变量&#xff0c;数组&#xff0c;对象等都有不同的初始化方法&#xff0c;在这些繁琐的初始化方法中没有任何一种方式适用于所有的情况。为了统一初始化方式&#xff0c;并且让初始化行为具有确定的效果&#xff0c;在C11中提出了列表初始化的概念。 代码如下: #in…

ffmpeg为何用c语言编译,如何使用ffmpeg的c语言sdk实现对文件夹的操作

重要函数打开文件夹&#xff1a;avio_open_dir()读取文件夹&#xff1a;avio_read_dir()关闭文件夹&#xff1a;avio_close_dir()结构体, 操作目录的上下文&#xff1a;AVIODirContext()目录项&#xff0c;用于存放文件名&#xff0c;文件大小等信息&#xff1a;AVIODirEntry()…

Sql Server之旅——第三站 解惑那些背了多年聚集索引的人

说到聚集索引&#xff0c;我想每个码农都明白&#xff0c;但是也有很多像我这样的伪程序员&#xff0c;只能用死记硬背来解决这个问题&#xff0c;什么表中只能建一个聚集索引&#xff0c;然后又扯到了目录查找来帮助读者记忆。。。。问题就在这里&#xff0c;我们不是学文科&a…

C#相关基础知识点总结+基础代码

C#基础知识 同一命名空间下的两个类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace HelloWorld {class A{private int a;public A(int x) { a x; }public void show() { Console.WriteL…

[PAT乙级]1038 统计同成绩学生

本题要求读入 N 名学生的成绩&#xff0c;将获得某一给定分数的学生人数输出。 输入格式&#xff1a; 输入在第 1 行给出不超过 10​5​​ 的正整数 N&#xff0c;即学生总人数。随后一行给出 N 名学生的百分制整数成绩&#xff0c;中间以空格分隔。最后一行给出要查询的分数个…

懂「互联网语」的程序员,是个狠人。

借用一下时下很火的「互联网语」做程序员的乐趣是只有进场的人才能获得的红利与程序员相处绝对是令人WOW的用户体验但是别真信那些个程序员说的话哪怕有无数江湖传言为他背书不然你良久建立的心智模型会在瞬间就崩塌毕竟头部程序员和腰腿部程序员之间的壁垒打通不了也许你暂时还…

综合知识点+计算机

综合知识点 多态性有哪些&#xff1f;&#xff08;静态和动态&#xff0c;分别叙述了一下虚函数和函数重载&#xff09; { 分为静态多态性和动态多态性&#xff0c;静态就是在编译时就已经确定了&#xff0c;动态是在程序运行时 才能确定。像函数重载&#xff0c;就是多个函数…

[PAT乙级]1036 跟奥巴马一起编程

美国总统奥巴马不仅呼吁所有人都学习编程&#xff0c;甚至以身作则编写代码&#xff0c;成为美国历史上首位编写计算机代码的总统。2014 年底&#xff0c;为庆祝“计算机科学教育周”正式启动&#xff0c;奥巴马编写了很简单的计算机代码&#xff1a;在屏幕上画一个正方形。现在…

c语言oj合法标识符,YTUOJ-C语言合法标识符

Description输入一个字符串&#xff0c;判断其是否是C的合法标识符。Input输入数据包含多个测试实例&#xff0c;数据的第一行是一个整数n,表示测试实例的个数&#xff0c;然后是n行输入数据&#xff0c;每行是一个长度不超过50的字符串。Output对于每组输入数据&#xff0c;输…