设为首页 加入收藏

TOP

c++中static的用法详解(二)
2015-11-21 01:03:48 来源: 作者: 【 】 浏览:7
Tags:static 用法 详解
作是类的成员,由该类型的所有对象共享访问,对该类的多个对象来说,静态数据成员只分配一次内存。 静态数据成员存储在全局数据区。静态数据成员定义时要分配空间,所以不能在类声明中定义。 也就是说,你每new一个Rectangle,并不会为static int s_sum的构建一份内存拷贝,它是不管你new了多少Rectangle的实例,因为它只与类Rectangle挂钩,而跟你每一个Rectangle的对象没关系。

2、静态成员函数:用于修饰 class 的成员函数。 我们对上面的例子稍加改动:
#include
      
       


using namespace std;


class Rectangle
{
private:
	int m_w,m_h;
	static int s_sum;
	
public:
	Rectangle(int w,int h)
	{
		this->m_w = w;
		this->m_h = h;
		s_sum += (this->m_w * this->m_h);
	}


	static void GetSum()  //这里加上static
	{
		cout<
       
        GetSum(); cout<
        
          上面注释可见:对GetSum()加上static,使它变成一个静态成员函数,可以用类名::函数名进行访问。 那么静态成员函数有特点呢? 1.静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数; 2.非静态成员函数可以任意地访问静态成员函数和静态数据成员; 3.静态成员函数不能访问非静态成员函数和非静态数据成员; 4.调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数,也可以用类名::函数名调用(因为他本来就是属于类的,用类名调用很正常) 前三点其实是一点:静态成员函数不能访问非静态(包括成员函数和数据成员),但是非静态可以访问静态,有点晕吗?没关系,我给你个解释, 因为静态是属于类的,它是不知道你创建了10个还是100个对象,所以它对你对象的函数或者数据是一无所知的,所以它没办法调用,而反过来,你创建的对象是对类一清二楚的(不然你怎么从它那里实例化呢),所以你是可以调用类函数和类成员的,就像不管GetSum是不是static,都可以调用static的s_sum一样。 
        
       
      
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 2066 一个人的旅行(最短路) 下一篇hdu 1257最少拦截系统(贪心)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: