读几个小程序了解c++:Part 01(构造函数、析构函数、指针、静态数据成员)

以前学c++的时候光打酱油了,现在抽出几天时间把c++系统复习一下,每天敲一个小程序记录下自己学习的东西。

#include <cstdio>
#include <climits>
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;


class Test{
private:          //私有成员:仅能被此类访问
    int s,t;
    static int cnt;     ///静态数据成员:无论建立多少个类对象,都只有一个静态数据成员

public:           //公有成员:可以被任意访问
    Test(int x, int y){ ///构造函数:对函数私有成员进行初始化
        s=x, t=y;
        cnt++;                //测试stctic功能时使用01
        cout<<"Constructor called."<<endl;
    }
    Test(){             ///构造函数重载:可以有多个重载
        s=12, t=13;
        cnt++;                //测试stctic功能时使用02
    }
    Test(const Test &p){///拷贝构造函数:用一个对象初始化另一个对象时才会被调用
        s=p.s*2, t=p.t*2;
        cnt++;                //测试stctic功能时使用03
    }
    ~Test(){            ///析构函数:清理任务
        cout<<"Destructor called."<<endl;
    }
    int add(){          ///生成成员函数方法一:直接编辑
        return (s+t);
    }
    int add(int x){     ///函数的重载
        return (s+t+x);
    }
    int minus_();       ///生成成员函数方法二:在类内声明成员函数,在类外编辑
    void show(){
        cout<<cnt<<endl;
    }
};
int Test::minus_(){     ///在类外定义成员函数
    return (s-t);
}
void fuction01(){       ///构造函数‘析构函数、指针
    Test A(1, 3);
    cout<<A.add()<<endl<<A.minus_()<<endl;
    cout<<A.add()<<endl<<A.add(2)<<endl<<endl;
    Test *p;            ///定义指针型变量
    p=&A;               ///将变量地址指向A
    cout<<(*p).add()<<endl<<(*p).minus_()<<endl;
}
void fuction02(){       ///拷贝构造函数
    Test A(1, 4), D, E(27, 4);  //调用构造函数Test(int x, int y)()
    Test C=A;                   //调用构造函数Test()
    Test B(A);                  //调用拷贝构造函数Test(const Test &p)()
    cout<<B.add()<<endl<<B.minus_()<<endl;

    E.show();
}
int Test::cnt=0;
int main(){
    ///fuction01();
    fuction02();
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值