C++学习-静态成员,静态成员函数

#include<iostream>
using namespace std;
class Data

{
    public:


        Data(int year=1999,int month=2,int day=3)
            :_year(year)
            ,_month(month)
            ,_day(day)
        {

            ++_count;
        }
        //拷贝构造也可用初始化列表
        Data(const Data& d)
            :_year(d._year)
            ,_month(d._month)
            ,_day(d._day)
        {
            ++_count;
            cout<<GetCount<<endl;
         int GetCount()//静态成员函数,
        {
            return _count;
        }
    private:
        int _year;
        int _month;
        int _day;
        //静态成员变量声明,不算在sizeof里面,存储在静态区
        static int _count;

};
//静态成员变量定义
int Data::_count=0;
Data f()
{
    Data d;
    return d;
}
int main()
{

    Data d1;
    Data d2;

    f();
    //cout<<d1._count<<endl;  count公有
    //cout<<d2._count<<endl;  count公有
    //cout<<Data::_count<<endl; count公有
    cout<<d1.GetCount()<<endl;  //GetCount是成员函数,对象调自己的成员函数可以通过

    //cout<<Data::GetCount()<<endl;//GetCount没有this指针,会报错,可以将GetCount修改成静态成员函数

    //cout<<Data::GetCount()<<endl; //GetCount是静态成员函数,没有this指针,只能访问静态成员变量

    return 0;

}
//静态成员函数不可以访问非静态成员,因为非静态成员属于类,必须通过类来反问
//非静态成员函数可以访问静态成员函数,静态成员变量属于类,只要突破类的限制,就可以访问静态成员变量

猜你喜欢

转载自blog.csdn.net/zgege/article/details/81219461