C++继承相关内容(三)

news/2024/11/25 15:31:14/

目录

一.单例模式和相关习题

1.不能在外部环境创建该类对象

方法:

代码:

2.创建一个不能被继承的类

方法:

3.创建一个不能被继承,但是可以在外部环境中创建该类对象

方法:

​编辑

4.一个能被继承的类,但不能在外部环境中创建该类的对象


一.单例模式和相关习题

前情概要:无论是公有继承还是私有继承,派生类的方法是可以访问自身的公有,保护和私有的,还可以访问基类的保护和公有的。在派生类中,基类的保护类似于公有,是可以访问的。但是在外部环境中是不可以访问保护和私有属性的对象或方法。

1.不能在外部环境创建该类对象

方法:

单例模式:只能创建一个对象,只能使用方法去调动静态对象,而静态对象只有一份,因此可以达到只能创建一个对象,而其的构造函数被私有化,所以不能在外部环境创建该类对象。为了防止用一个对象去赋值另一个对象我们将其赋值重载删除,为防止用一个对象初始化另外一个对象,我们将其的拷贝构造函数删除,从而达到只能通过调用公有的方法去访问私有的构造函数。

代码:

class Single {int value;
private:Single(int x = 0) :value(x) {}Single(const Single&)=delete;Single& operator=(const Single&)=delete;
public:~Single(){}static Single& getInstance() {static Single s(10);return s;}
};
int main() {Single& s2 = Single::getInstance();//只能调用公有的方法去调用私有的构造函数//Single* sp = (Single*)malloc(sizeof(Single));//*sp = s2;为了防止一个对象赋值另外一个对象,我们把其赋值语句删除掉
}

2.创建一个不能被继承的类

方法:

将构造函数设置为私有的,派生类只能访问基类的保护和公有的属性和方法,不能访问基类的私有属性

class Object {
private:Object() {}
public:~Object(){}
};
class Base :public Object {
public:Base() :Object() {}
};

此时就不能继承Object这个类,因为他的构造方法我们无法访问到

3.创建一个不能被继承,但是可以在外部环境中创建该类对象

方法:

final关键字 表示最终类不能被继承,但是该类可以在外部环境中可以创造对象,因为其构造函数是公有属性

代码:

class Object final{
private:public:Object() {}~Object(){}void show()const{}
};
class Base :public Object {
public:Base() :Object() {}
};
int main() {Object o1;o1.show();
}

4.一个能被继承的类,但不能在外部环境中创建该类的对象

方法:

将构造函数等变成保护类型:一个能被继承的类,但不能在外部环境中创建该类的对象
限制派生类对象不可拷贝和赋值:将基类的拷贝和赋值删掉

代码:

class Object {
private:
protected:Object() {}
public:Object(const Object&) = delete;Object& operator=(const Object&) = delete;~Object(){}void show()const{}
};
class Base :public Object {
public:Base() :Object() {}
};
int main() {Object o1;o1.show();
}

好了,关于c++继承相关的内容就学习到介里啦,后续就是c++的多态相关知识,包括虚函数,编联等相关内容。还有就是到了期末复习周呜呜呜,可能更新速率会慢一些


http://www.ppmy.cn/news/276703.html

相关文章

手机抓不到包,解决很简单

在渗透过程中,需要对每一个参数,每一个接口,每一个业务逻辑构建测试用例,为此,抓包分析是必不可少的一个过程。在PC端,Burpsuite成为了渗透必备的神器,然而,使用Burpsuite有时候抓取…

手机碎屏党必备,转移你未备份的手机文件

虽然每次我买手机都贴了钢化屏保膜,但是我有三个手机依然难逃屏幕摔碎的厄运,可以说我是一枚标准的碎屏党。 摔坏手机之后,比花钱更心疼的就是手机里面的通讯录/图片和重要信息没法导出来。因为自己一直是碎屏小达人,心累。所以我…

原来华为手机语音助手,还有3大隐藏功能,职场人的必备神器

原来华为手机语音助手,还有3大隐藏功能,职场人的必备法宝 说到语音助手,大家首先就会想到苹果手机的Siri,或者小米的小爱同学。但是华为手机的语音助手也不差。不论是对办公、学习,还是开车上下班都有很大的帮助&…

苹果新旧手机数据转移_换机必备知识:如何将数据转移到Oppo手机上

现在的智能手机越来越便宜了,换手机是经常的事情。 但唯一的缺点是更换手机时新旧手机的数据备份很麻烦。 许多人会选择将数据传输到计算机,然后再传输到新手机。或者,用户将可以备份的内容备份到microSD卡上。但这些方法都比较老土。如今,智能手机制造商拥有专用的应用程序…

React 和 Vue 的理解,异同

相似之处: 都将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库;都有自己的构建工具,能让你得到一个根据最佳实践设置的项目模板;都使用了 Virtual DOM(虚拟 DOM)提高重…

Android手机音频采样率,手机音质差?提升音质必备App了解下

在很多人的印象中,手机的音质水平并不高。特别是大多数的安卓机,抛却硬件不说,软件方面也存在一些音频输出的缺陷,例如播放音频时容易发生SRC等等。 不过就算是普通手机,也是可以通过一些APP来提升音质的。手机上有一些值得一试的HiFi APP,一起来看看吧。 海贝音乐 前面提…

手机必备四款提高工作效率APP,每一个都是黑科技!

1.录音转文字助手 一款录音转文字并翻译的APP,适用于会议记录、采访记录。讲座等各种场合,实时分享,记录保存,方便快捷。 2.PDF转换大师 支持多种文件格式转换,PDF文件可以转换为Word、Excel、TXT、HTML等&#xff0…

仙人掌之歌——权力的游戏(4)

技术大培训 周一上午,陈速在工位上有些坐立不安,他也不知道自己在等待着什么。脑子里不可遏止地又想起上周五时,易伟成过来找自己说的那些没头没脑的话。易伟成先是询问直播串的参数细节,因为他要设计播放串加密方案,…