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

#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 function
	void 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 line

	p=&a;
                              //  pc=&b;
                              //test p , a and *p
	p=&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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值