用html5制作个人网站建站之星模板的使用

web/2025/9/26 23:50:24/文章来源:
用html5制作个人网站,建站之星模板的使用,京东联盟的网站怎么做,百度云资源文章目录 1. 前言2. 不能被拷贝的类3. 不能被继承的类4. 只能在堆上创建对象的类5. 只能在栈上创建对象的类6. 只能创建一个对象的类#xff08;单例模式#xff09; 1. 前言 在实际场景中#xff0c;我们在编写类的过程中总会遇到一些特殊情况#xff0c;比如设计一个类不… 文章目录 1. 前言2. 不能被拷贝的类3. 不能被继承的类4. 只能在堆上创建对象的类5. 只能在栈上创建对象的类6. 只能创建一个对象的类单例模式 1. 前言 在实际场景中我们在编写类的过程中总会遇到一些特殊情况比如设计一个类不能被拷贝/不能被继承/只能在堆上创建对象/只能在栈上创建对象/只能创建一个对象基于这些场景我们来谈谈这些特殊类该如何实现。 2. 不能被拷贝的类 拷贝只会放生在两个场景中拷贝构造函数以及赋值运算符重载因此想要让一个类禁止拷贝只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98的实现方法 将拷贝构造函数与赋值运算符重载只声明不定义并且将其访问权限设置为私有即可。 class CopyBan {// ... private:CopyBan(const CopyBan);CopyBan operator(const CopyBan);//... };原因 设置成私有如果只声明没有设置成private用户自己如果在类外定义了就可以不能禁止拷贝了。 只声明不定义不定义是因为该函数根本不会调用定义了其实也没有什么意义不写反而还简单而且如果定义了就不会防止成员函数内部拷贝了。 C11的实现方法 C11扩展delete的用法delete除了释放new申请的资源外如果在默认成员函数后跟上delete表示让编译器删除掉该默认成员函数。 class CopyBan {// ...CopyBan(const CopyBan) delete;CopyBan operator(const CopyBan) delete;//... };3. 不能被继承的类 C98的实现方法 构造函数私有化派生类中调不到基类的构造函数则无法继承。 class NonInherit { public:static NonInherit GetInstance(){return NonInherit();} private:NonInherit(){} };C11的实现方法 final关键字final修饰类表示该类不能被继承。 class NonInherit final {// .... };4. 只能在堆上创建对象的类 顾名思义就是只能通过new来创建对象一般的实现思路有以下两种注意细节处理。 析构函数私有化 将析构函数私有化后由于对象析构时并不能调用到析构函数所以在栈上直接创建对象会报错我们只能在堆上new一个对象。但是在销毁对象时我们不能使用delete直接销毁对象因为delete也会调用到析构函数这里可以特殊处理在共有域定义一个函数此函数显示调用析构。 class HeapOnly { public:void destory(){delete this;} private:~HeapOnly(){cout 调用析构成功! endl;} }; int main() {//HeapOnly ho1; // error 析构函数不可访问无法创建对象HeapOnly* ho2 new HeapOnly;//delete ho2; // error 析构函数不可访问无法销毁对象 h2-destory();return 0; }构造函数私有化 将构造函数私有化后由于对象创建时无法调用到构造函数所以不管在堆上还是栈上都无法创建对象。在这里我们可以在公有域定义一个函数去在堆上创建一个该类的对象并返回指向这块空间的指针我们巧妙地将其设置成static函数这样我们就可以通过类名来调用该函数而该函数是唯一创建该类对象的方法。 class HeapOnly { public:static HeapOnly* CreateObject(int x 0){return new HeapOnly(x);} private:HeapOnly(int x 0) :_x(x){}int _x; };int main() {//HeapOnly ho1; // error 构造函数不可访问无法创建对象//HeapOnly* ho2 new HeapOnly; // error 构造函数不可访问无法创建对象HeapOnly* ho3 HeapOnly::CreateObject(10);return 0; }细节处理 做到以上的实现后我们还需拷贝构造声明成私有防止别人调用拷贝在栈上生成对象。 // C98 private:HeapOnly(const HeapOnly); // C11 HeapOnly(const HeapOnly) delete;5. 只能在栈上创建对象的类 有了前面的思路我们可以利用构造函数私有化来解决此问题。 设计方法将构造函数私有化然后设计静态函数创建返回对象即可。 注意这里需要将operator new和operator delete禁用因为new可以调用拷贝构造创建对象如果我们在类中没有重载operator newnew就会调用全局的operator new所以要想禁用new则需要在类中将operator new禁用。 class StackOnly { public:static StackOnly CreateObj(){return StackOnly();}// 禁掉operator new可以把下面用new调用拷贝构造创建对象给禁掉void* operator new(size_t size) delete;void operator delete(void* p) delete; private:StackOnly():_a(0){} private:int _a; };int main() {StackOnly so1 StackOnly::CreateObj();//StackOnly* so2 new StackOnly(so1); // error 无法引用operator newreturn 0; }6. 只能创建一个对象的类单例模式 在学习单例模式前我们先来了解一下设计模式 设计模式Design Pattern是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。为什么会产生设计模式这样的东西呢就像人类历史发展会产生兵法。最开始部落之间打仗时都是人拼人的对砍。后来春秋战国时期七国之间经常打仗就发现打仗也是有套路的后来孙子就总结出了《孙子兵法》。孙子兵法也是类似。 使用设计模式的目的为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化设计模式是软件工程的基石脉络如同大厦的结构一样。 单例模式就是设计模式的一种 单例模式 一个类只能创建一个对象即单例模式该模式可以保证系统中该类只有一个实例并提供一个访问它的全局访问点该实例被所有程序模块共享。比如在某个服务器程序中该服务器的配置信息存放在一个文件中这些配置数据由一个单例对象统一读取然后服务进程中的其他对象再通过这个单例对象获取这些配置信息这种方式简化了在复杂环境下的配置管理。 单例模式有两种实现模式 饿汉模式 就是说不管你将来用不用程序启动时就创建一个唯一的实例对象。 具体代码实现 class Singleton { public:static Singleton* GetInstance(){return _ins;} private://限制类外随意创建对象Singleton(const Singleton s) delete;Singleton operator(const Singleton s) delete;Singleton() {}static Singleton* _ins; }; Singleton* Singleton::_ins new Singleton; // 在程序入口之前就完成单例对象的初始化优点简单。缺点可能会导致进程启动慢且如果有多个单例类对象实例启动顺序不确定。 如果这个单例对象在多线程高并发环境下频繁使用性能要求较高那么显然使用饿汉模式来避免资源竞争提高响应速度更好 懒汉模式 如果单例对象构造十分耗时或者占用很多资源比如加载插件 初始化网络连接读取文件等等而有可能该对象程序运行时不会用到那么也要在程序一开始就进行初始化就会导致程序启动时非常的缓慢。 所以这种情况使用懒汉模式延迟加载更好。 具体代码实现 //懒汉模式 class Singleton { public:static Singleton* GetInstance(){if (m_pInstance nullptr){m_mtx.lock();if (m_pInstance nullptr){m_pInstance new Singleton();}m_mtx.unlock();}return m_pInstance;}// 实现一个内嵌垃圾回收类class CGarbo{public:~CGarbo(){if (Singleton::m_pInstance)delete Singleton::m_pInstance;}};// 定义一个静态成员变量程序结束时系统会自动调用它的析构函数从而释放单例对象static CGarbo Garbo;private://限制类外随意创建对象Singleton(const Singleton s) delete;Singleton operator(const Singleton s) delete;Singleton() {} private:static Singleton* m_pInstance; // 单例对象指针static mutex m_mtx; // 互斥锁 }; Singleton* Singleton::m_pInstance nullptr; Singleton::CGarbo Garbo; mutex Singleton::m_mtx;与饿函数模式不同的是懒汉模式在多线程情况下有线程安全问题所以在第一次拿唯一的对象前需要加锁并且对象在程序启动时被置空了只有调用了GetInstance()才会真正的分配空间。 拓展C常用的11种设计模式。

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

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

相关文章

网站建设微信端如何把网站做的和别人一样吗

QEventLoop和QtConcurrent可以结合使用达到主线程ui不阻塞同步执行的效果,但是要小心避坑,查看如下代码: QEventLoop loop; QtConcurrent::run([&]() {doSomething();loop.quit(); }); loop.exec();上述写法存在两个问题: Q…

大丰网站建设公司电商网站合作

由于最近比较忙,所以本周搞了一个相对简单的验证码,就是抖音Tiktok的滑块验证码,这也是接到客户的一个需求。这种验证码通常在电脑端登录抖音、巨量引擎的的时候出现。 首先看一下最终的效果: 验证码识别过程 1、利用爬虫采集图…

沈阳网站排名工具贵州省城乡建设厅网站

用户系统: 之前提到,linux是个多用户系统,所以要使用linux,首先你得是个用户 用户:普通用户管理员 每一个用户有自己的用户名密码, 会话(session):一个终端使用服务器的全过程 从你用户登录,到你…

网站制作方案大全弄美团网站的一般一个做赚多少钱

由全国高等院校计算机基础教育研究会指导,利亚德集团和爱迪斯通科技发起的数字人设计大赛正在火热进行中,同时进行的元宇宙数字人设计大赛校园行活动也正式拉开序幕,12月13日校园行活动—中国戏曲学院开讲。划重点:此次大赛已成为…

注入漏洞网站源码苏州360推广网站建设

文档链接:https://programmercarl.com/ LeetCode509.斐波那契数 题目链接:https://leetcode.cn/problems/fibonacci-number/ 思路: 动规五部曲: 这里我们要用一个一维dp数组来保存递归的结果 1.确定dp数组以及下标的含义 d…

网站做不做账网站建设国家有补贴吗

等保的全称是信息安全等级保护,是《网络安全法》规定的必须强制执行的,保障公民、社会、国家利益的重要工作。 官方定义:等级保护是对信息和信息载体按照重要性等级分级别进行保护的一种工作,指对国家重要信息、法人和其他组织及公…

建行商城网站网站维护更新费用

2653: middle Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 2381 Solved: 1340[Submit][Status][Discuss]Description 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整。给你一个长度为n的序…

整站排名怎么提升网站排名

【分享】Android JNI实例​ Android的SDK中没有包括JNI的支持,而且对如何支持JNI也没有任何文档说明。不过既然整个Android平台是开源的,我们可以通过Google发布的源代码来找到一些线索(比如frameworks/base/media/jni/目录)&…

怎么登陆建设u盾网站网络销售平台排名

目录 前言: 优点: 缺点: 饿汉式(静态变量方式) 懒汉式(线程不安全) 懒汉式(双重检查锁定) 推荐方式Lazy 总结: 前言: 这种模式涉及到一个单一的类&a…

大气集团网站模板免费素材库图片

什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机…

网站制作的主要流程怎么建立公司的网站吗

身份证正则判断 今天分享的是身份证的正则判断,在很多时候需要到,所以在这里记录下来。之前做正则判断的时候,有一些小瑕疵,判断不够全面,正则判断,结构紧凑,全面的判断很重要,所以…

建网站 技术wordpress加图标

父向子通信 1.定义props 子组件中,定义期望接收的属性。例如,在子组件的script部分: export default {props: {message: String // 假设父组件要传递一个字符串类型的数据} } 2.传递数据 在父组件的模板中,通过属性绑定的方式将…

wordpress 企业网站模板dw网页制作视频

要在 Python 中使用 MySQL 数据库进行增删改查(CRUD)操作,你可以使用 pymysql 库。以下是一些示例代码,展示如何实现这些操作。 首先,确保你已经安装了 pymysql。如果没有安装,可以通过以下命令安装&#…

做盗版视频网站违法吗湖北智能网站建设推荐

伦敦大学学院(UCL)的研究团队,提出了“一个激进的新模型,与所有数据相匹配,并最终优雅地展示出了古希腊人眼中的宇宙”。1901年,在希腊岛屿安提基特拉的海岸,潜水员偶然发现了一艘古代沉船。沉船中的一件文物&#xff…

做网站也是一门技术外贸网站英文版

一、MySQL自带的压力测试工具——Mysqlslapmysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。mysqlslap为mysql性能优化前后提供了直观的验…

带搜索网站建设视频教程木纹背景的精致wordpress企业主题

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

网站建设与管理基础公司建设网站的申请信用卡

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼(165)Internet的邮件传输协议标准为_______。A)SNMP B)SMTP C)FTP D)TELNET答 案:B知识点:浏览器、电了邮件及Web服务器的安全特性评 析:SNMP即简单网络管理协议;SMTP即简单邮件传输协…

做网站设计需求wordpress外贸数码

github打不开的几种解决方案 参考文章 GitHub 加速镜像 以下是两个免费的 GitHub 公益加速项目 kkgithub.com仅需在 github.com 的 g 前加上 kk,就可正常访问 GitHub。 例如: https://github.com/tldraw/tldraw 将链接更换后: https://…

招商网站建设解决方案建设一个手机网站需要多少钱

正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较,mysql允许你指定正则表达式,过滤select检索出的数据。但是mysql仅仅支持正则表达式的一个子集。 1、基本字符匹配: select prod_n…