通过清心醉

重温C++

做为自己的入门语言,10多年了,学了C++基础之后就专做web开发,一直都在整PHP和VUE。最近的空闲,重新回味下C++。

来一个简单的代码

//#define _CRT_SECURE_NO_WARNINGS 
//定义_CRT_SECURE_NO_WARNINGS 主要考虑strcpy_s /和 strcpy等部分string字符串操作异常,如果考虑向下兼容则使用,否则不建议使用。
#include <iostream>
#include <thread> //多线程
#include <exception> //异常
#include <string> //字符串需要
using namespace std;

//-----------------------------------------------类型函数重载开始------------------------------------------->
//重载函数int
int max(int x, int y) {
    if (x > y) {
        return x;
    }
    else {
        return y;
    }
}
//重载函数float
float max(float x, float y) {
    if (x > y) {
        return x;
    }
    else {
        return y;
    }
}

//重载函数调用(类型调用)
void IntFloatMain() {
    int a = 100, b = 200;
    std::cout << "int max = " << max(a, b) << "\n";
    float x = 11.11f, y = 22.22f; //float类型,带个f
    std::cout << "double max = " << max(x, y) << "\n";
}
//-----------------------------------------------类型函数重载结束--------------------------------------------->
// 

//-----------------------------------------------不同参数重载开始-------------------------------------->
//3个参数取最大值
int LengthMax(int x, int y, int z) {
    if (x > y) {
        if (x > z) {
            return x;
        }
        else {
            return z;
        }
    }
    else {
        if (y > z) {
            return y;
        }
        else {
            return z;
        }
    }
}
//2个参数取最大值
int LengthMax(int x, int y) {
    if (x > y) {
        return x;
    }
    else {
        return y;
    }
}

//重载函数调用(参数数量)
void ArgeLengthMain() {
    int a = 100, b = 200, c = 300;
    std::cout << "max = " << LengthMax(a, b) << "\n";
    std::cout << "max = " << LengthMax(a, b, c) << "\n";
}
//-----------------------------------------------不同参数重载结束------------------------------------>

//-----------------------------------------------函数模板开始------------------------------>
template <typename I> //函数模板声明 //注意这里定义的I为未知的类型,也就是可以是int,float,doublue等类型,I为自定义名称
//定义函数模板,带2个参数
I Tempmax(I x, I y) {
    if (x > y) {
        return x;
    }
    else {
        return y;
    }
}

void TempLateMax() {
    int a = 100, b = 200;
    std::cout << "Template int max = " << Tempmax(a, b) << "\n";
    double x = 11.11, y = 22.22;
    std::cout << "Template double max = " << Tempmax(x, y) << "\n";
}

//-----------------------------------------------函数模板结束------------------------------>


//------【变量类型】------>
int tempdemo_value = true;
int cc = 100;
void tempdemo() {
    static int ax = 100; //静态变量
    auto bx = 100;
    register int cx = 1000; //寄存器变量,直接在CPU内进行运算
    extern int tempdemo_value; //在函数体内引用,就可以直接引用,不过如果是外部的全局变量,直接应用也是可以的。比如一下的变量cc,同样可以对cc变量进行重新赋值
    sizeof(bx); //查看变量占用的字节
    std::cout << "cc=" << cc << "\n";
}


int main()
{
    try {
        IntFloatMain(); //调用不同类型的重载函数
        ArgeLengthMain(); //调用同类型,不同的参数数量的重载函数
        TempLateMax();//调用函数模板
        return true;
    }
    catch (exception e) {
        cout << "Exception \n";
    }

}


关于作者

清心醉 administrator

发表评论

请输入验证码: