小结下C++中静态函数与成员

来源:互联网 发布:如何自学成为sql工程师 编辑:程序博客网 时间:2024/05/16 17:49
#include<iostream>using namespace std;class Point{public:Point(int x=0,int y=0):x(x),y(y){count++;}Point(Point &p){x=p.x;y=p.y;count++;}~Point(){ count--;}int GetX(){ return x;}int GetY(){ return y;}static void showCount(){cout<<"object count="<<count<<endl;//cout<<x<<endl;            //静态成员函数不可访问非静态类的私有成员}                           //error C2597: illegal reference to data member 'Point::x' in a static member functionvoid print(){cout<<x<<y<<count<<endl;             //常成员函数可访问类中静态成员}private:int x,y;static int count;};int Point::count=0;               //静态成员变量的申明只能在类外 类中定义报错 int main(){Point a(4,5);cout<<"Point A:"<<a.GetX()<<","<<a.GetY();//a.showCount();                 //可通过对象访问静态成员函数Point::showCount();Point b(a);cout<<"Point B:"<<b.GetX()<<","<<b.GetY();Point::showCount();b.print();return 0;}

1.静态函数与常量函数(这里只经过了vc6.0的测试通过)
        对于静态函数只能访问类中的静态成员函数,而对于非静态成员则不能访问,类外可以通过类名而不是对象(测试中对象也可以调用)调用静态成员函数!
       而对于非静态成员函数,在类中可以调用非静态私有成员,但是不能使用静态成员。
2.静态成员与非静态成员
      静态成员的初始化不能在类的构造函数中,而需要在类外初始化,静态成员是属于整个类的。

补充: 关于const 在指针前后的区别

  

#include<iostream>using namespace std;int main(int argc,char* argv[]){int a=1,b=2;const int *p;int *const pc=&b;         // must define in this linep=&a;                              //  pc=&b;                              //test p , a and *pp=&b;a=2;                              //*p=b;        rror C2166: l-value specifies const object                              //test pc ,b and *pc                          //pc=&a;        error C2166: l-value specifies const object*pc=b;cout<<*p<<'\n'<<*pc<<endl;return 0;}

原创粉丝点击