类静态成员(难点)

一、类静态数据成员

静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这里主要讨论用类的静态成员来实现对象间的数据的共享。

静态数据成员的使用方法和注意事项如下:  

1、静态数据成员在定义或说明时前面加关键字static。 

2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:   

<数据类型><类名>::<静态数据成员名>=<值>

3、静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。  

4、引用静态数据成员时,采用如下格式:  

<类名>::<静态成员名>

#include <stdio.h>
class A
{ 
public:
	   static int count;//定义一个静态成员用来存放类对象的个数
	    void  setcount(int k);
	   A()
	   {
		   count++;
	   }
};
   
 int A::count =0;   //设置静态成员的初值
 void A:: setcount(int k)   //设置计数变量
 {
	 this->count=k;
 }
 void main()
{     
	  A a;
	  A b;
	  printf("实例化次数%d\n",A::count);
      a.setcount(888);//通过这一句可以设置count数值,a与b共享同一个count;
	  printf("a的count为:%d\n",a.count);//对于静态的来讲,
	  //这里a.count与A::count与A.count可以互换
	  printf("b的count为:%d",b.count);
	  getchar();
}

二、类静态成员函数

静态成员函数内不能使用非静态类成员数据。

类成员函数可以独立使用。(不必通过对象调用成员函数,可以使用类名+作用域解析符调用静态成     员函数。如Tdate::staticFun();)

最好把成员函数的实现放在.cpp里边,以防止重复定义。

 

				
时间: 2024-10-11 23:56:46

类静态成员(难点)的相关文章

C++类静态成员与类静态成员函数

当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享.各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关.静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关. 静态数据成员的用途之一是统计有多少个对象实际存在. 静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的.也不能在类的构造函数中初始化该成员,因为静态数据成员为类的各个对象共享,否则每次创建一

mfc 类静态成员

知识点 类静态数据成员 类静态成员函数 一.类静态数据成员 静态成员的提出是为了解决数据共享的问题.实现共享有许多方法,如:设置全局性的变量或对象是一种方法.但是,全局变量或对象是有局限性的.这一课里,我们主要讨论用类的静态成员来实现对象间的数据的共享. 静态数据成员的使用方法和注意事项如下: 1.静态数据成员在定义或说明时前面加关键字static. 2.静态成员初始化与一般数据成员初始化不同.静态数据成员初始化的格式如下: <数据类型><类名>::<静态数据成员名>=

类静态成员变量的使用

问题: 类中定义了一个静态成员变量static QString userName; 在直接调用类静态成员userName时,QT提示如下错误: 解决: 在CPP文件中初始化类的静态成员变量, QString Parameter::userName = "sa";  本文用菊子曰发布

关于C++类静态成员在Delphi中实现的思考

关于C++类静态成员在Delphi中实现的思考 没有用过Version 7 以后的Delphi版本,即便5.6.7版本,我也不能够说了解较深.因此,本文可能杞人忧天. 一.为什么需要静态成员 比如:一个类,常常需要创建多个对象,我们经常需要得到这些对象的Count:再如:在类似链表中,我们需要标识它的头部.这些信息,都需要供给所有对 象共享(甚至类).不可能把信息放到类中去,因为类不占有内存空间:不能够用全局变量,这将破坏类的封装:如果放到对象中去,又显然不现实:当某一个对象 发生改变时,要逐一

类静态成员变量和静态成员函数的访问方式

1.在类所有实例中静态成员变量和静态成员函数都只有一份拷贝 2.静态成员函数不能调用非静态成员,非静态成员函数可以调用静态成员 3.静态成员变量在使用前要初始化 一.静态成员变量的访问 class B { public: static int a; }; int B::a=0;//必须要先初始化 int main(){ cout<<B::a<<endl; return 0; } 二.静态成员函数的访问 class B { public: static void a(){ print

Java核心技术第四章----对象与类重难点总结

一.类之间的关系 类和类之间的关系,耦合度从高到低: is -a.继承.实现 has-a.组合.聚合.关联 user-a.依赖. 要求是:高内聚.低耦合. 继承("is-a") 继承(Inheritance),即"is-a"关系,是一种用于表示特殊与一般关系的.表示类与类(或者接口与接口)之间的父子关系.一般而言,如果类A扩展类B,类A不但包含从类B继承的方法,还会拥有一些额外的功能.在JAVA中,用关键字extends表示继承关系 实现(Implementatio

C++ 静态成员的类内初始化

一般来说,关于C++类静态成员的初始化,并不会让人感到难以理解,但是提到C++ 静态成员的"类内初始化"那就容易迷糊了. 我们来看如下代码: 1 //example.h 2 #include<iostream> 3 #include<vector> 4 using namespace std; 5 6 class Example{ 7 public: 8 static double rate = 6.5; 9 static const int vecSize =

[当我在研究Cocos-2dx的源代码时,我在想什么]-Ref类,一切的起源

[名词解释] 引用计数:引用计数是现代内存管理中常常使用到的一个概念.它的基本思想是通过计数方式实现多个不同对象同一时候引用一个共享对象,详细地讲,当创建一个对象的实例并在堆上分配内存时,对象的引用计数为1,在其它对象中须要持有这个共享对象时.须要把共享对象的引用计数加1.当其它对象不再持有该共享对象时,共享对象的引用计数减1,当共享对象的引用计数变成0时.对象的内存会被马上释放.(部分截取自维基百科). 比較著名的使用引用计数的有COM和Objective-C,在COM的IUnknow接口中定

C++ Primer 学习笔记_104_特殊工具与技术 --嵌套类

特殊工具与技术 --嵌套类 可以在另一个类内部(与后面所讲述的局部类不同,嵌套类是在类内部)定义一个类,这样的类是嵌套类,也称为嵌套类型.嵌套类最常用于定义执行类. 嵌套类是独立的类,基本上与它们的外围类不相关,因此,外围类和嵌套类的对象是互相独立的.嵌套类型的对象不具备外围类所定义的成员,同样,外围类的成员也不具备嵌套类所定义的成员. 嵌套类的名字在其外围类的作用域中可见,但在其他类作用域或定义外围类的作用域中不可见.嵌套类的名字将不会与另一作用域中声明的名字冲突 嵌套类可以具有与非嵌套类相同