C++笔记函数重载函数模板

来源:互联网 发布:2017淘宝卖什么利润大 编辑:程序博客网 时间:2024/04/29 22:02
#include <iostream>using namespace std;class Student{private:    int num;    int score;public:    void setdata()  //定义公用的函数setdate    {        cin>>num;        cin>>score;    }    void display()   //定义公用函数display    {        cout <<"num="<<num<<endl;        cout <<"score="<<score<<endl;    }};Student stu1,stu2;int main(){    stu1.setdata();    stu1.display();    stu2.setdata();    stu2.display();    return 0;}                 //在函数的后面加上不加;结果都是一样的一句话的结束符号;不影响函数的执行

在C++中也允许函数的重载,即函数的一物多。

#include <iostream>//#include <iomanip>using namespace std;int max(int a, int b,int c){    if(b>a)a=b;    if(c>a)a=c;    return a;}float max(float a, float b,float c){    if(b>a)a=b;    if(c>a)a=c;    return a;}long max(long a, long b,long c){    if(b>a)a=b;    if(c>a)a=c;    return a;}int main(){      int a,b,c;    float d,e,f;    long g,h,i;    cin>>a>>b>>c;    cin>>d>>e>>f;    cin>>g>>h>>i;    int m;    m=max(a,b,c);    cout<<"max_i="<<m<<endl;    float n;    n=max(d,e,f);    cout<<"max_f="<<n<<endl;    long int p;    p=max(g,h,i);    cout<<"max_l="<<p<<endl;    return 0;}                 //在函数的后面加上不加;结果都是一样的一句话的结束符号;不影响函数的执行

main函数三次调用函数max()函数,每次实参的类型不同。系统会根据实参的类型找到与之匹配的函数,然后调用该函数。当然当参数的个数不同的时候定义是的函数也能够进行重载。
C++也提供了函数模板,所谓函数模板就是建立一个通用函数,其函数的类型和形参不进行具体的指定,使用一个虚拟的类型来代表。这个通用的函数就是函数模板。

#include <iostream>//#include <iomanip>using namespace std;//通用函数定义template<typename T>T max1(T a,T b,T c){    if(b>a)a=b;    if(c>a)a=c;    return a;}int main(){    cout<<max1(5,4,6)<<endl;    cout<<n_add(5,3,5)<<endl;    cout<<n_add(5.35,5.5,6)<<endl;    return 0;    return 0;}                 //在函数的后面加上不加;结果都是一样的一句话的结束符号;不影响函数的执行

变量的引用,在C++中使用符号&在变量之前代表对变量的引用,只要变量一被引用那么变量和被引用变量就代表同一个变量。

#include <iostream>using namespace std;int main() {    int a=0;    int &b=a;    b=9;    cout<<a<<endl;    cout<<b<<endl;    cout << "Hello, World!" << endl;    return 0;}

在进行变量的引用之后,改变变量b的值变量a的值也会发生改变,即变量a和b代表同一个变量。
并且对变量声明一个引用,并不另开辟内存单元,b和a都代表同一个变量单元。在声明一个引用的时候,必须对其进行初始化,即声明代表哪一个变量。
引用和被引用的变量具有相同的地址

#include <iostream>using namespace std;int main() {    int a=0;    int &b=a;    b=9;    cout<<a<<endl;    cout<<b<<endl;    cout<<&a<<endl;    cout<<&b<<endl;    cout << "Hello, World!" << endl;    return 0;}/home/andrew/文档/Clion/untitled2/cmake-build-debug/untitled2990x7ffdfcae94740x7ffdfcae9474Hello, World!Process finished with exit code 0
0 0