您的位置:首页 > 其它

在MFC中添加全局变量和全局函数的方法

2016-09-04 23:29 239 查看
用静态局部变量(Static)定义类中的函数、变量,则就相当于定义了全局函数、全局变量。

说明:(1)静态局部变量、函数在即使在改类没有对象的情况下,也可以调用但是要加上类名。如:在应用时输入  类名::函数   即可调用。

            (2)静态局部变量的值为最后一次使用它给其赋的值。

具体步骤如下:

1. 添加一个没有基类的新类,设类名起为CPublic,姑且称之为公用类。

单击“项目”菜单下的“添加类”命令,在新弹出的对话框中选择C++类(即没有基类的类),点击添加,在新弹出的对话框中的“类名”栏中填入类名“CPublic”,单击“OK”,则新类建立完毕。

2.在要应用全局变量、函数的cpp文件中加入该头文件,即 #include “CPublic”。

3.在Public.h中声明全局变量和全局函数,均使用static修饰,静态变量还必须在类外定义和初始化,且定义不能保存在.h文件中。例如:

  在Public.h中:

 

class CPublic

{

public:

CPublic();

virtual ~CPublic();

 

 

public:

static int x; //全局变量

static int time; //全局变量

static int f(int y); //全局函数

 

}

 

在Public.cpp中:

 

int CPublic::x = 0; //初始化全局变量,一定要注意,变量一定要先初始化赋值才可用,否则报错。

int CPublic::time; //定义全局变量

 

int CPublic::f(int y) //全局函数,这里不要再加static

{ y++; 4

return y;

}

4、全局量的使用

使用变量:CPublic::变量名

使用函数:CPublic::函数()

 

 

几点说明:

(1)由于静态量可独立于类存在,不需要生成CPublic类的实例。

(2)静态数据成员的定义和初始化必须在类外进行,如例中x的初始化;变量time虽然没有初始化,但也必须在类外进行定义。由于没有生成CPublic类的实例,所以它的构造函数和析构函数都不会被执行,在里面做什么工作都没有什么意义。

(3)如果静态函数需要访问CPublic类内的变量,这些变量也必须为静态的。因为非静态量在不生成实例时都不会存在。

(4)在声明静态局部变量、静态局部函数时要加static,但是在定义式不用加。

(5)在定义时,要用类名::变量(或函数)。

(6)引用时记得加上类名,即 类名::变量(或函数),而不是直接使用函数、变量。

(7)一定要注意,此处的变量一定要先初始化赋值才在其他类可用,否则报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: