首页 > 编程语言 >从优秀源码中学到的两个技巧

从优秀源码中学到的两个技巧

时间:2023-09-26 20:11:57浏览次数:34  
标签:中学 技巧 int other Base using 拷贝 data 源码

设计一个不能被using的对象

  在实际开发中为了避免命名空间污染,一般都不会using namespace std。但是如果一个对象写起来比较复杂,用using能大幅度地简化操作。现在假设我们要设计一个函数,它在一个作用域里面,使用它只能以A::B::C()这种形式。思考一下,如果我们放在命名空间下,是可以被using简化的。我们不妨可以试试设计一个结构体。

class A {
    public:
        static void hello() {
            std::cout << "Hello World\n";
        }

        static void f() {
            std::cout << "Goodbye World\n";
        }

        static void g() {
            std::cout << "Nothing\n";
        }

        A() = delete;
        A(const A& other) = delete;
        ~A() = delete;
        A& operator= (const A& other) = delete;
};

  我们可以把构造函数,析构函数,拷贝构造还有拷贝赋值这一类函数都删掉,因为并不打算构造一个对象。除此之外,每个成员函数都用static修饰,因为它与实例化无关。这样,当我们想要调用hello函数的时候,我们可以A::hello(),这样就达到了目的。

 

禁止自己拷贝自己

  这段代码其实是可以通过编译的。

int n = n;

  同样,如果设计的类不经过特殊处理,诸如此类的操作也是可以通过编译的。通过引入assert断言的手段我们可以解决这个问题。

class Base {
    int data;

    public:
        Base(int data) : data(data) {}

        Base(const Base& other) {
            assert(&other != this);
            data = other.data;
        }
};

  只需判断拷贝的地址是否与this指针指向的地址相同即可。

标签:中学,技巧,int,other,Base,using,拷贝,data,源码
From: https://www.cnblogs.com/ChebyshevTST/p/17731035.html

相关文章

  • 开发同城O2O外卖系统源码:外卖跑腿小程序的核心功能
    随着移动互联网的快速发展,外卖行业迎来了巨大的机遇。O2O(Online to Offline)模式逐渐崭露头角,而同城外卖跑腿小程序成为了这一领域的热门选择。 第一部分:简介简单涞水,外卖跑腿平台是一种允许用户在同城范围内订购食物、货物或服务的应用程序。那么,想要开发一个同城O2O外卖系统,您......
  • 多阅读编程语言语言的官方文档及一些源码
    1官方文档回顾了下自己这几年的学习历程,关于编程语言官方文档的学习很少很少,平时喜欢去看各种公众号文章和网站教程,自己的python基础以及一些框架基础就是就是在公众号、网站教程、博客和书上学来的。现在看看官方文档的那些海量的内容,自己都觉得很惊奇,很少看过不说,有些地方自己......
  • Xmake v2.8.3 发布,改进 Wasm 并支持 Xmake 源码调试
    Xmake是一个基于Lua的轻量级跨平台构建工具。它非常的轻量,没有任何依赖,因为它内置了Lua运行时。它使用xmake.lua维护项目构建,相比makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。我们......
  • CH643-RGB内驱键盘方案软件使用技巧(持续更新)
    一、如何改变键盘使用COM数量CH643内驱键盘方案demo默认使用3*8(RGBSEG)+13COM的结构,也就是最多能够驱动13*8=104个RGB灯,如果想要增加或者减少COM使用数量需要怎么处理呢?具体操作步骤如下:1、IO初始化修改,修改使用COM引脚IO的初始化,如下图所示:2、修改PWM配置初始化中LEDPWM->COM......
  • 看广告小程序源码app解决方案
      看广告小程序其实在开发难度并不大,看技术人员如何对接好广告接口,看广告软件的模式已经开始形成一个产业链了。现在介绍的就是关于一种完整的看广告小程序源码App解决方案,包括其设计理念、功能特点、技术实现及未来发展。  一、软件的设计  看广告小程序软件设计是......
  • Websocket集群解决方案以及实战(附图文源码)
    最近在项目中在做一个消息推送的功能,比如客户下单之后通知给给对应的客户发送系统通知,这种消息推送需要使用到全双工的websocket推送消息。所谓的全双工表示客户端和服务端都能向对方发送消息。不使用同样是全双工的http是因为http只能由客户端主动发起请求,服务接收后返回消息。web......
  • 在线直播系统源码,取CTreeCtrl控件选中节点的文字
    在线直播系统源码,取CTreeCtrl控件选中节点的文字 voidCAboutDlg::OnSelchangedTree1(NMHDR*pNMHDR,LRESULT*pResult) {NM_TREEVIEW*pNMTreeView=(NM_TREEVIEW*)pNMHDR;//TODO:Addyourcontrolnotificationhandlercodehere    MessageBox(m_tree1.GetIte......
  • 185_技巧_Power Query(M)语言快捷输入之搜狗输入法设置自定义短语
    185_技巧_PowerQuery(M)语言快捷输入之搜狗输入法设置自定义短语此前,我们发布过如何通过QQ拼音输入法来实现快速的输入PowerQuery(M)语言。参考:https://jiaopengzi.com/730.html今天我们来更新PowerQuery(M)语言在搜狗输入法中设置自定义短语的快捷输入。快捷输入效......
  • LIS实验室(检验科)信息系统源码 C# +.Net+Oracle
    LIS实验室(检验科)信息系统,一体化设计,与其他系统无缝连接,全程化条码管理。集申请、采样、核收、计费、检验、审核、发布、质控、查询、耗材控制等检验科工作为一体的网络管理系统。技术细节:体系结构:Client/Server架构客户端:WPF+WindowsForms服务端:C#+.Net数据库:Oracle接口技术:RESTf......
  • MounRiver使用技巧及配置2
    1、关于调试模式下ecall和ebreak指令无效的解释说明调试模式下ebreak会是断点,直接停在此处,单步可跳过。ecall会触发中断进入HardFault_Handler 2、关于MRS编译同时输出hex文件和bin文件按照下图添加即可:${cross_prefix}${cross_objcopy}${cross_suffix}-Obinary"${ProjNa......