C++面试题之继承

2023-11-18

目录

设计一个类型,不能在外部环境中创建该类的对象

设计一个不能被继承的类

设计一个不能被继承的类 , 但可以在外部环境创建该类型的对象

设计一个能被继承的类 , 但不能在外部环境创建该类型的对象

限制派生类对象不可以拷贝和赋值如何实现。


 

设计一个类型,不能在外部环境中创建该类的对象

class Singleton
{
	int value;
private: // protected:
	Singleton(int x = 0) :value(x) {}
public:
	Singleton(const Singleton&) = delete; // c98;
	Singleton& operator=(const Singleton&) = delete;
private:
	~Singleton() { cout << "~Singleton" << endl; }
public:
	static Singleton& getInstance()
	{
		static Singleton s(10);
		return s;
	}
	//static Singleton sc;
};

0a74e2bbd45e46a183bddbe328a3eca7.png 

 

设计一个不能被继承的类

class non_herit
{
private:
	non_herit() {}
public:
	non_herit(const non_herit&) {}
	~non_herit() {}
};
class B : non_herit
{

};
int main()
{
	//B b;
}

0037806d2b084a5ba915ed456dcf8cfe.png

 

设计一个不能被继承的类 , 但可以在外部环境创建该类型的对象

class non_herit final : public Object
{
	int value;
public:
	non_herit(int x = 0) :value(x) {}
	non_herit(const non_herit&) = default; // delete // c11;
	non_herit& operator=(const non_herit&) = default;
	~non_herit() = default;
};

设计一个能被继承的类 , 但不能在外部环境创建该类型的对象


class Object
{
private:
	int value;
protected:
	Object(int x = 0) :value(x) {}
	Object(const Object& obj) :value(obj.value) {}
	Object& operator=(const Object& obj)
	{
		if (this != &obj)
		{
			value = obj.value;
		}
		return *this;
	}
public:
	~Object() {}
};

限制派生类对象不可以拷贝和赋值如何实现。


class noncopyable
{
public:
	noncopyable() = default;
	~noncopyable() = default;
protected:
	noncopyable(const noncopyable&) = delete;
	noncopyable& operator=(const noncopyable&) = delete;
};                                     

83ddb8fa8d814892a5aabb14a567852f.png

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++面试题之继承 的相关文章

随机推荐

  • java 内存溢出的代码_Java 常见内存溢出异常与代码实现

    Java 堆 OutOfMemoryError Java 堆是用来存储对象实例的 因此如果我们不断地创建对象 并且保证 GC Root 和创建的对象之间有可达路径以免对象被垃圾回收 那么当创建的对象过多时 会导致 heap 内存不足 进而引
  • python从键盘输入一个字符串、将小写字母全部_从键盘输入一个字符串_将其中的小写字母全部转换成大写字母...

    从键盘输入一个字符串 将其中的小写字母全部转换成大写字母 然后输出到一个磁盘文件 test 中保存 输入的字符串以 结束 我写的程序是 include include include void main char str 100 int i
  • Element Plus 实例详解(一)___安装设置

    Element Plus 实例详解 一 安装设置 本篇目录 一 前言 二 安装方法 1 环境支持 2 Element Plus安装使用方式 1 使用包管理器 2 浏览器直接引入 3 Element Plus引入方式使用小例子 三 Eleme
  • C++ 函数模板的重载与实参推断

    结合网上的资料 对函数模板的重载与实参推断做一个总结 函数模板的重载 当需要对不同的类型使用同一种算法时 为了避免定义多个功能重复的函数 可以使用模板 然而 并非所有的类型都使用同一种算法 有些特定的类型需要单独处理 为了满足这种需求 C
  • angular中组件之间的嵌套使用

    第一步先把对应的文件创建好 main component ts phone component ts books component ts details component ts 第二步 导入到我们的app module文件中 impor
  • pip修改下载源

    Windows 直接切换到虚拟环境中 输入下面的命令即可 配置中科大镜像 pip config set global index url https mirrors ustc edu cn pypi web simple 配置阿里源 pip
  • java实现一个整数和一个小数的四则运算和求最大值,平均值。

    实现一个整数和一个小数的四则运算和求最大值 平均值 import java applet Applet import java awt public class Yunsuan extends Applet Label prompt1 pr
  • verilog中$readmemb和$readmemh的使用

    菜鸟一枚 只是分享一下在学习的过程 和这两个系统函数的简单用法 readmemb和 readmemh用来从文件中读取数据到存储器中 读取的内容只包括 空白位置 空格 换行 制表格 tab和form feeds 注释行 二进制或十六进制的数字
  • 微信小程序后端,helloworld,a+b,JSONObject相关问题。

    参考视频教程 b站 P5 输出hello world 按视频教程敲 即可 小程序输入数字 IDEA运算后返回A B 小程序开发工具中代码 IDEA中代码 教程 所遇到问题 解决 输入后 找不到getInteger方法 检查发现 是我类的问题
  • 用html+css给女朋友写一个爱心

    这是最后的样子 用一个div 再用before和after就行了 这是html div class ax div 再加上css padding 0px margin
  • 华为OD机试 - 字符串排序(C++ & Java & JS & Python)

    目录 描述 输入描述 输出描述 示例1 Java python C 描述 编写一个程序 将输入字符串中的字符按如下规则排序 规则 1 英文字母从 A 到 Z 排列 不区分大小写 如 输入 Type 输出
  • jdbc(2)——之Class.forName(com.mysql.cj.jdbc.Driver)理解

    理解Class forName Com mysql cj jdbc Driver Class forName com mysql cj jdbc Driver 在使用jdbc的时候这行代码必不可少 我们来仔细理解一下这行代码的意义和原理 1
  • 毕业设计 免费送源码36412-SSM 环卫人员管理平台,【计算机毕业设计开题选题+程序定制+论文书写+答辩ppt书写-原创(题目+编号)的定制程序】

    本科生毕业论文 设计 题 目SSM环卫人员管理平台 学 院 XXXXX 专业班级 XXXXX 用户姓名 XXXX 指导人才招聘 XXXX 撰写日期 2023年3月 目 录 摘要 1 绪论 1 1背景及意义 1 2国内外研究概况 1 3研究内
  • 列举几个:MAC OS科研软件推荐

    工欲善其事 必先利其器 部分科研狗也会深爱MAC OS虽然他再科研软件上跟WINDOWS相比还有一定差距 但是MAC OS的人性化轻量也是深得人心 这次就为大家推荐MAC OS上的科研软件 1 科学绘图软件 QtiPlot SciDAVis
  • CS5216

    CS5216特点 DP 到HDMI的显示协议转换器 支持Level shifter Repeater两种应用 应用Dongle或Cable市场 将显卡DP 输出 转接为HDMI输出 CS5216参数 符合高达3 0Gbps的HDMI 1 4
  • Linux之prink原理

    我的分析是基于Linux4 15 1 1 看看kernel是如何调用到console初始化函数的 分两条线 a start kernel gt console init gt call con initcall start 去调用放在 co
  • Java 集合、HashMap 底层实现原理

    一 Java 集合概述 Java 集合可分为 Collection 和 Map 两种体系 Collection接口 单列数据 定义了存取一组对象的方法的集合 List 元素有序 指的是存储时 与存放顺序保持一致 可重复的集合 Set 元素无
  • Mybatis---增删改查

    目录 一 添加用户 1 持久层接口方法 2 映射文件 3 测试方法 二 修改用户 1 持久层接口方法 2 映射文件 3 测试方法 三 删除用户 1 持久层接口方法 2 映射文件 3 测试方法 四 查询用户 1 持久层接口方法 2 映射文件
  • Redis查询当前库有多少个 key

    info可以看到所有库的key数量 dbsize则是当前库key的数量 keys 这种数据量小还可以 大的时候可以直接搞死生产环境 dbsize和keys 统计的key数可能是不一样的 如果没记错的话 keys 统计的是当前db有效的key
  • C++面试题之继承

    目录 设计一个类型 不能在外部环境中创建该类的对象 设计一个不能被继承的类 设计一个不能被继承的类 但可以在外部环境创建该类型的对象 设计一个能被继承的类 但不能在外部环境创建该类型的对象 限制派生类对象不可以拷贝和赋值如何实现 设计一个类