zoukankan      html  css  js  c++  java
  • C++——指针5

    8.2 指向类的静态成员的指针

    对类的静态成员的访问不依赖于对象,可以用普通的指针来指向和访问。

    //通过指针访问类的静态数据成员

    #include <iostream>

    using namespace std;

    class Point //Point类声明

    {

    public:        //外部接口

             Point(int xx=0, int yy=0) {X=xx;Y=yy;countP++;}    //构造函数

             Point(Point &p); //拷贝构造函数

             int GetX() {return X;}

             int GetY() {return Y;}

     

             static int countP; //静态数据成员引用性说明

    private:      //私有数据成员

             int X,Y;

    };

    Point::Point(Point &p)

    {

             X=p.X;

             Y=p.Y;

             countP++;

    }

     

    int Point::countP=0;    //静态数据成员定义性说明

     

    int main()   //主函数实现

    {

             int *count=&Point::countP;              //声明一个int型指针,指向类的静态成员

             Point A(4,5);       //声明对象A

             cout<<"Point A,"<<A.GetX()<<","<<A.GetY();

             cout<<" Object id="<<*count<<endl;   //直接通过指针访问静态数据成员

             Point B(A); //声明对象B

             cout<<"Point B,"<<B.GetX()<<","<<B.GetY();

             cout<<" Object id="<<*count<<endl; //直接通过指针访问静态数据成员

    }

    //通过指针访问类的静态函数成员

    #include <iostream>

    using namespace std;

    class Point //Point类声明

    {

    public:        //外部接口

             Point(int xx=0, int yy=0) {X=xx;Y=yy;countP++;}    //构造函数

             Point(Point &p); //拷贝构造函数

             int GetX() {return X;}

             int GetY() {return Y;}

             static void GetC() {cout<<" Object id="<<countP<<endl;}       //静态函数成员

    private:      //私有数据成员

             int X,Y;

             static int countP; //静态数据成员引用性说明

    };

    Point::Point(Point &p)

    {

             X=p.X;

             Y=p.Y;

             countP++;

    }

     

    int Point::countP=0;    //静态数据成员定义性说明

    //初始化,使用类名限定

     

    int main()   //主函数实现

    {

             void (*gc)()=Point::GetC;     //声明一个指向函数的指针,指向类的静态成员函数

             Point A(4,5);       //声明对象A

             cout<<"Point A,"<<A.GetX()<<","<<A.GetY();

             gc();  //输出对象序号,直接通过指针访问静态数据成员

             Point B(A); //声明对象B

             cout<<"Point B,"<<B.GetX()<<","<<B.GetY();

             gc();  //输出对象序号,直接通过指针访问静态数据成员

    }

  • 相关阅读:
    简单记录下SpringCloud的微服务架构和一些概念
    Spring创建对象的几种方法
    几个设计模式总结
    为什么用B+树做索引&MySQL存储引擎简介
    Spring的ioc(DI)复习概念和原理简介
    spring bean中注入HttpServletRequest成员变量的思考(转载)
    类加载机制 + Classloader.loadClass(String name)和Class.forName(String name)
    记一下一道关于finally的题
    bio,nio,aio简介
    Integer一类的比较问题
  • 原文地址:https://www.cnblogs.com/lemaden/p/10238003.html
Copyright © 2011-2022 走看看