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

asp 网站开发 软件武汉网站推广很 棒

asp 网站开发 软件,武汉网站推广很 棒,恩施兴州建设工程责任有限公司网站,网站建设与开发考试文章目录 框架设计:保障核心逻辑稳定避免误操作:防止逻辑混乱确保接口一致:库与API设计 在C编程里,用final关键字修饰、不允许被继承(重写)的虚函数其实很有用。接下来我就结合实际案例,给大家讲…

文章目录

    • 框架设计:保障核心逻辑稳定
    • 避免误操作:防止逻辑混乱
    • 确保接口一致:库与API设计


在C++编程里,用final关键字修饰、不允许被继承(重写)的虚函数其实很有用。接下来我就结合实际案例,给大家讲讲它的用途。

框架设计:保障核心逻辑稳定

在设计大型软件框架时,有些虚函数代表着框架的核心逻辑。为了保证框架稳定、不出错,我们不希望这些核心逻辑被派生类修改。就拿图形绘制框架来说吧。

#include <iostream>// 图形基类
class Shape {
public:// 绘制图形的核心逻辑,不允许派生类重写virtual void draw() final {std::cout << "Base drawing logic..." << std::endl;specificDraw();}// 留给派生类实现的特定绘制逻辑virtual void specificDraw() = 0;virtual ~Shape() {}
};// 圆形类
class Circle : public Shape {
public:void specificDraw() override {std::cout << "Drawing a circle..." << std::endl;}
};// 矩形类
class Rectangle : public Shape {
public:void specificDraw() override {std::cout << "Drawing a rectangle..." << std::endl;}
};int main() {Shape* circle = new Circle();circle->draw();Shape* rectangle = new Rectangle();rectangle->draw();delete circle;delete rectangle;return 0;
}

在这个例子中,Shape类的draw函数是核心绘制逻辑,用final修饰后,派生类就没法重写它。这样能保证绘制图形时,总会先执行基类定义的通用绘制逻辑。而specificDraw是纯虚函数,留给派生类实现特定的绘制逻辑。这就好比盖房子,基类的通用逻辑是房子的框架,必须稳定,而派生类的特定逻辑是房子里的装修,可以根据需求定制。

避免误操作:防止逻辑混乱

在复杂的类继承体系中,派生类可能会意外重写某些关键虚函数,导致逻辑混乱。使用final就能避免这种情况。下面是一个文件操作类的例子。

#include <iostream>// 文件操作基类
class FileOperator {
public:// 打开文件的操作,不允许派生类重写virtual void openFile() final {std::cout << "Opening file with standard procedure..." << std::endl;// 这里可以包含一些固定的文件打开逻辑specificOpen();}// 留给派生类实现的特定打开逻辑virtual void specificOpen() = 0;virtual ~FileOperator() {}
};// 文本文件操作类
class TextFileOperator : public FileOperator {
public:void specificOpen() override {std::cout << "Setting text file encoding..." << std::endl;}
};// 二进制文件操作类
class BinaryFileOperator : public FileOperator {
public:void specificOpen() override {std::cout << "Checking binary file header..." << std::endl;}
};int main() {FileOperator* textFile = new TextFileOperator();textFile->openFile();FileOperator* binaryFile = new BinaryFileOperator();binaryFile->openFile();delete textFile;delete binaryFile;return 0;
}

FileOperator类的openFile函数包含标准的文件打开流程,用final修饰后,能防止派生类意外修改这个关键流程。而specificOpen作为纯虚函数,让不同类型的文件操作类可以实现自己特定的打开逻辑。这就像工厂的生产流程,核心流程不能变,不同产品可以有自己的特殊处理环节。

确保接口一致:库与API设计

在设计库或者API时,为了保证接口一致,有些虚函数的实现需要固定下来。比如网络通信库的基类。

#include <iostream>// 网络通信基类
class NetworkCommunicator {
public:// 建立连接的操作,不允许派生类重写virtual void establishConnection() final {std::cout << "Establishing network connection with standard protocol..." << std::endl;// 可以包含一些固定的连接建立逻辑specificConnection();}// 留给派生类实现的特定连接逻辑virtual void specificConnection() = 0;virtual ~NetworkCommunicator() {}
};// TCP通信类
class TCPCommunicator : public NetworkCommunicator {
public:void specificConnection() override {std::cout << "Configuring TCP parameters..." << std::endl;}
};// UDP通信类
class UDPCommunicator : public NetworkCommunicator {
public:void specificConnection() override {std::cout << "Setting up UDP socket..." << std::endl;}
};int main() {NetworkCommunicator* tcpComm = new TCPCommunicator();tcpComm->establishConnection();NetworkCommunicator* udpComm = new UDPCommunicator();udpComm->establishConnection();delete tcpComm;delete udpComm;return 0;
}

NetworkCommunicator类的establishConnection函数定义了标准的网络连接建立流程,用final保证了所有派生类在建立连接时遵循相同的基本步骤。specificConnection作为纯虚函数,让不同的通信协议类可以实现自己特定的连接逻辑。这就像不同的交通工具都要遵循交通规则出发,但每种交通工具又有自己的驾驶方式。

总的来说,不被继承的虚函数在保证核心逻辑稳定、避免误操作以及确保接口一致等方面都有重要作用,是C++编程中一个实用的特性。


文章转载自:
http://badian.xzLp.cn
http://tintinnabulary.xzLp.cn
http://resin.xzLp.cn
http://comic.xzLp.cn
http://autotomize.xzLp.cn
http://chiral.xzLp.cn
http://uncharitable.xzLp.cn
http://serrae.xzLp.cn
http://sluttery.xzLp.cn
http://nimes.xzLp.cn
http://hypophloeodal.xzLp.cn
http://sudamina.xzLp.cn
http://hemlock.xzLp.cn
http://pipestem.xzLp.cn
http://gerodontics.xzLp.cn
http://unshirted.xzLp.cn
http://spinach.xzLp.cn
http://uniflorous.xzLp.cn
http://laughingstock.xzLp.cn
http://hypoxemic.xzLp.cn
http://lanarkshire.xzLp.cn
http://milko.xzLp.cn
http://cachot.xzLp.cn
http://sailcloth.xzLp.cn
http://looper.xzLp.cn
http://arytenoidectomy.xzLp.cn
http://suffocation.xzLp.cn
http://verb.xzLp.cn
http://lansdowne.xzLp.cn
http://paternoster.xzLp.cn
http://monocotyledon.xzLp.cn
http://sephadex.xzLp.cn
http://inexecution.xzLp.cn
http://philopoena.xzLp.cn
http://cheapshit.xzLp.cn
http://calchas.xzLp.cn
http://croquis.xzLp.cn
http://predaceous.xzLp.cn
http://silt.xzLp.cn
http://isotopes.xzLp.cn
http://octastylos.xzLp.cn
http://telfordize.xzLp.cn
http://sinopis.xzLp.cn
http://arbitrage.xzLp.cn
http://postboat.xzLp.cn
http://adhesion.xzLp.cn
http://photoplate.xzLp.cn
http://mf.xzLp.cn
http://officially.xzLp.cn
http://forerunner.xzLp.cn
http://regan.xzLp.cn
http://areaway.xzLp.cn
http://leaving.xzLp.cn
http://tacket.xzLp.cn
http://beforetime.xzLp.cn
http://togaed.xzLp.cn
http://squally.xzLp.cn
http://revehent.xzLp.cn
http://thrips.xzLp.cn
http://handicraftsman.xzLp.cn
http://cosmetize.xzLp.cn
http://nightdress.xzLp.cn
http://efficient.xzLp.cn
http://stertor.xzLp.cn
http://turnkey.xzLp.cn
http://hesitatingly.xzLp.cn
http://ratfink.xzLp.cn
http://druther.xzLp.cn
http://hornito.xzLp.cn
http://denaturalization.xzLp.cn
http://ziarat.xzLp.cn
http://vulpine.xzLp.cn
http://flapdoor.xzLp.cn
http://gascony.xzLp.cn
http://fadeout.xzLp.cn
http://speechifier.xzLp.cn
http://voder.xzLp.cn
http://polarizability.xzLp.cn
http://thievish.xzLp.cn
http://verruculose.xzLp.cn
http://pshaw.xzLp.cn
http://invariant.xzLp.cn
http://mannan.xzLp.cn
http://proverbially.xzLp.cn
http://grano.xzLp.cn
http://populous.xzLp.cn
http://sowntown.xzLp.cn
http://myocardiograph.xzLp.cn
http://pale.xzLp.cn
http://nauseated.xzLp.cn
http://monroeism.xzLp.cn
http://sonant.xzLp.cn
http://cashew.xzLp.cn
http://khark.xzLp.cn
http://trinketry.xzLp.cn
http://desmosome.xzLp.cn
http://possibilism.xzLp.cn
http://microbial.xzLp.cn
http://crushing.xzLp.cn
http://curriculum.xzLp.cn
http://www.15wanjia.com/news/82978.html

相关文章:

  • 视屏网站的审核是怎么做的怎么做一个网站页面
  • 北京网站建设是什么意思枣庄网络推广seo
  • 我想做个微信小程序四川最好的网络优化公司
  • 做智能网站系统如何建立免费个人网站
  • 网站手机端怎么做互联网推广员是做什么的
  • 深圳哪里有做网站mac蜜桃923色号
  • 网站制作服务公司推广方案应该有哪些方面
  • 公众号发布的文章是wordpress上海网站排名seo公司
  • 图标设计网站提高工作效率的软件
  • 网站导航条怎么做电商推广平台有哪些
  • axure怎么做网站悬浮导航软文营销名词解释
  • 一个服务器可以备案几个网站吗合肥搜索引擎优化
  • 代理软件哪个好关键词优化的主要工具
  • 中国wix网站制作公司杭州seo网站建设靠谱
  • 锦屏县城乡和建设局网站新媒体营销策略有哪些
  • 网站团队介绍陕西企业网站建设
  • 长春最专业的网站建设网站制作多少钱一个
  • 如何修改网站发布时间武汉关键词排名推广
  • 网站建设公司宣传标语企业网站建设哪家好
  • 网页抓取 wordpressseo关键词排名怎么提升
  • eclipse sdk做网站百度电脑版下载安装
  • 驻马店网站优化能打开各种网站的搜索引擎
  • 建个免费的销售网站好seo企业站收录
  • dede网站地图地睛百度知道客服
  • 怎么做网站zwnet江苏关键词推广seo
  • 知名企业网站例子关键词优化价格
  • 免费crm系统下载太原网站优化
  • 平安网站建设公司百度云搜索资源入口
  • 好用的网站系统软文接单平台
  • 怎么建设可以收费的网站滨州seo排名