美文网首页
C/C++基础知识(三)——单例、重载、模板

C/C++基础知识(三)——单例、重载、模板

作者: 王志强_9380 | 来源:发表于2019-10-12 17:11 被阅读0次

单例对象和操作符重载

studentinstance.h

#pragma once
class StudentInstance
{
private:
    
    static StudentInstance* instance;
    StudentInstance() {
    };
public:
    static StudentInstance* getInstance();

};
studentinstance.cpp

#include "studentinstance.h"

StudentInstance* StudentInstance::instance = 0;

StudentInstance* StudentInstance::getInstance() {
    if (!instance) {
        instance = new StudentInstance();
    }
    return instance;
}

单例调用

StudentInstance* studentInstance = StudentInstance::getInstance();

注意:指针声明的时候一定要初始化,.h里面声明的构造函数也要实现,否则会报错

操作符重载:

#pragma once
class OperatorAdd
{
public:
    int  i;
    OperatorAdd operator+(const OperatorAdd& p) {
        OperatorAdd temp;
        temp.i = this->i + p.i;
        return temp;
    };
};

使用关键字operator把加号重载了,调用的时候,类可以直接相加

OperatorAdd add1;
add1.i = 1;
OperatorAdd add2;
add2.i = 3;
OperatorAdd add3;
add3 = add1 + add2;

类模板和函数模板

类似于java中的泛型

//类模板
template <class T, class E>

class tempTest {
public:
    T addClassTemp(T t, E e) {
        return t + e;
    }

    //函数模板
    template <typename Q>
    Q addFuncTemp(Q i, Q j) {
        return i + j;
    }
};

执行

tempTest<float, int> tempt;
float tempclass1 = tempt.addClassTemp(3, 2.12f);
int tempclass2 = tempt.addClassTemp(3, 2.12f);
float tempclass3 = tempt.addClassTemp(2.12f, 3);
int tempclass4 = tempt.addClassTemp(2.12f, 3);
float tempfunc = tempt.addFuncTemp(2.12f, 3.56f);
std::cout << tempclass1 << std::endl;
std::cout << tempclass2 << std::endl;
std::cout << tempclass3 << std::endl;
std::cout << tempclass4 << std::endl;
std::cout << tempfunc << std::endl;

执行结果:
5
5
5.12
5
5.68

相关文章

  • C/C++基础知识(三)——单例、重载、模板

    单例对象和操作符重载 单例调用 注意:指针声明的时候一定要初始化,.h里面声明的构造函数也要实现,否则会报错 操作...

  • c++的运算符重载

    C++中的加号重载:例:实现复数的相加 C++中的前置++重载:例:点的移动 C++中的后置++重载:例:点的移动

  • Geekband C++ 第五周

    概述 C++模板简介 函数模板 C++类模板 操作符重载 泛型编程 容器

  • C++单例模板

    单例模板类: template classSingleton { public: Singleto...

  • C++ 学习(2) ---- 基本语法介绍

    C++ 基本语法(2) C++基础语法说明模板NA运算符重载NA强制类型转换static_cast,const_c...

  • 单例模式

    单例模式及C++实现代码单例模式4种实现详解 c++11改进我们的模式之改进单例模式 单例模式(Singleton...

  • 17 基于类型属性的重载

    基于模板实参属性重载函数模板是很自然的需求,比如 然而,C++现在还不提供任何直接表达基于类型属性重载的方法,两个...

  • 【C++ Templates(18)】基于类型属性的重载

    想基于模板实参属性重载函数模板是很自然想做的,如 然而,C++现在还不提供任何直接表达基于类型属性重载的方法,两个...

  • 30小时快速精通C++拾遗

    C语言不支持重载,为什么C++支持重载? C语言不支持函数重载,编译时函数名加上_或者其他标识C++为什么能够重载...

  • 1.2.15_C++ 关系运算符重载

    C++ 重载运算符和重载函数 C++ 语言支持各种关系运算符( < 、 > 、 <= 、 >= 、 == 等等),...

网友评论

      本文标题:C/C++基础知识(三)——单例、重载、模板

      本文链接:https://www.haomeiwen.com/subject/bbqqmctx.html