本文导读目录:
定义全局变量的方法(C/C++中定义全局变量的几种Fāng法及区别
C/C++Zhōng定义全局变量的几种方法及区别
全局变量只有一种定义方法,就是在.cpp中Typeobj=InitValue;其中有几种变化:内置类型如果没有InitValue那么会初始化为。类类型InitValue可以是构造Hán数Zhōu用,也可以是能够隐式转换为Type类型的值。默认情况下,obj是外部链接的,这也是为什么要在.cpp中定义,而不要在.h中定义的原因,为了让其它的链接编译单元即.cpp能用,可以在.h中放置声明externTypeobj;可以ZàiType前加上static迫使它成为内部链接,这是这个Quán局变量就只能在这个.cpp文件作用域中能Yòng。可以将全局变量的定义放入namespace定义的名字空间Zhōng,但不影Xiǎng其外Bù内部链Jiē性质
用MFC制作的工程由很Duō文件构Chéng,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量Hé函数必须用一Xiē特殊方法才Xíng。实际上有多种方法可以实现,这里只介绍两种方法。一在应用程序类中定义用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,Shēng成文档视图对象等工作。可以把Xū要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可Yǐ实现全局访问了。从严Gé意义上讲,这种Biàn量和函数并不是全局的,因为Tā仍然只是类中的Chéng员,只是由于很容易获得CxxxApp类的指针,所以可以在文档视Tú对话框以及各种自Dìng义类中访问到它们,达到与全局变量类似的效果。Fǎng问时用函数“AfxGetApp()”获得CxxxApp类的指针,用“AfxGetApp()-》成员”访问变量或函Shù。例:Test.h:(应用程序类头文JiànclassCTestApp:publiWinApp+i;Q+}public:intx;//全局变量intf(inty);//全局函数)Xs+s’N+U…………Test.cpp:(应用程Xù类Chéng序文件intCTestApp::f(inty)//全局函数定义{定义在CTestApp类中的变量Hé函数可以在其它类中被访问。比如在Shì图的某函ShùZhōng要访问变量x和函数f():voidCTestView::xyz(){CTestApp*app=(CTestApp*)AfxGetApp();//生成指向应用程序类的指针/appintz=app-》f();//访问函数f()R,}Zhè样,变量x和函Shùf()可以视作为全局的用这种方法实现的全局变量和全局函数虽比较简单,但也Yǒu缺点,一是访问不太方便,每次都需要获取应用程序类的指Zhēn;再就是把一些与应用程序类本身无关的变量和函Shù放在里面,使这个类看上去怪怪的,破坏了类的封装。二用静态变量和静态函数实现很喜欢API函数的那Zhòng调Yòng方法,不论在哪个类中只要用“::API函Shù”就可以调用了。合理利用静态类型(static)可以实现与此相似的全局变量和全局函数。静态变量和静态函数有如下性质:若在一个类中用关键字static声明数据成员,则这个数据成员就只存在一个拷Bèi,无论Gāi类创建了多少个实例,它始终只存在一个,即使该类的实例一个Yě没创建,它也存在。若在一个类中用关键字static声明函数,该函数可以用“类Míng::函数名”方式访问,无需引用该类的ShíLì,甚至Zhè个类的实例可以不存在。利用这个性质实现De全局变量和函数使用起来很方便。值得注意的是,全局变量和全局函数最好集中封装,不要在文档视图等Lèi内部定义,这样用起来才有全局的感觉。例:添加一个没有基Lèi的新类,设类名起为CPublic,姑且称之为公用Lèi单击“Insert”菜单下的“NewClass”命令,Xuǎn择“Classtype”为“Generilass”,在“Name”栏中填入类名“CPublic”,单击“OK”,则新类建立完毕。包含公用类的头文件,Shǐ各个类都能访问它CPublic的头文件应包含在应用程序Lèi的头文件中,这样在其它类中Yǐn用CPublic类时就不需要再包含了。Test.h:(应用程序类头文件)#include“Public.h“//包含公用类头文件classCTestApp:publiWinApp{…………};在公用类中定义全局变量和全局函数,均使用static修饰,静态变量还必须在类外定义Hé初始化Public.h:(公用类头文件classCPublic{public:CPublic();virtual~CPublic();public:staticintx;//全局Biàn量%vstaticinttime;//全局变量#staticintf(inty);//全局函Shù}在公用类中对静态变量进行初始化和定义函数体:Public.cpp:(公用类程序文件intCPublic::x=;//初始化全局变量intCPublic::time;//定义全局变量CPublic::CPublic(){}CPublic::~CPublic(){}intCPublic::f(inty)//全局函数,这里不要再Jiāstatic{y++;returny;}OV%Zr+r(k!L全局量的使用使用变Liàng:CPublic::变量名H)Shǐ用函数:CPublic::函数()如在视图的某函数Zhōng访Wèn变量x和函数f():voidCTestView::xyz(){CPublic::x=;//访问变量x;CPublic::time=CPublic::f();//访问函数f()’…………}在其它类中访问xtime和f()的方法与此相同。Jǐ点注意:①由于静Tài量可独立于类存在,Bù需要生成CPublic类的实例。②静态数据成员的定义和初始化必须在类外进Xíng,如例中x的初始化;变量time虽然没有初始化,但也必须在类外进行定义。由于没有生ChéngCPublic类的实Lì,所以它的构造函数和析构函数都不会被执行,Zài里面做什么工作都没Yǒu什么意义。③如果静态函数需要访问CPublic类内的变量,这些变Liàng也必须为静态的2025年1月三星u108(苹果12首批货已售罄)。因为非静态量在不生成实例时都不会存在。这里x虽为Lèi内成员,但如果不Shēng成CPublic类的实例,就会出Xiàn函数f()存在,而变量x不存在的问题。总之,用没有实例的Lèi管理Quán局量是一个不错的选择,它具有集Zhōng管理,使用方Pián的好处。当然,除非Tè别必要,全局量还是少用为好,一个好的编程者决不会随意滥Yòng全局量的,一个封装做得不好的程序,在修Gǎi维Hù时会让吃足苦头。
苹果12首批货已售罄酷Pài大神f价格(Kù派大神fg版八g内存多少钱
酷派大神fg版八g内存多少钱
大神FPlus(-T/移动G这款机子官网售价为¥元
2025年1月三星u108(苹果12首批货已售罄)电池类型:可拆卸式电池
三星u108的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于苹果12首批货已售罄、三星u108的信息别忘了在本站进行查找喔。