关于静态变量和函数粗浅理解(很粗,很浅)
2014-06-12 04:16
239 查看
#include<iostream> #include<string> using namespace std; // int n; //***************************************类中的静态成员变量******************************************************* class Stu{ public: int id; string name; static int num;//由于不属于任何一个对象而是属于整个类,所以在没有构造对象之前就可以对它进行访问,访问时 //访问格式见 line35 //遵循访问规则(public,private,protected) //******************************************静态成员函数********************************************************** static int getNum(){ //没有this指针 return num; } //只能访问静态成员变量<span style="color:#ff0000;">//在此修改,在没有参数表的情况下才是只能访问静态变量,如果有参数表,可以访问参数对象的私有,保护,公有变量</span> //不能定义为虚函数(个人理解:本质并不属于类,无所谓继承和多态性) //访问格式见 line35 }; int Stu::num =0;//静态成员不储存在类中,初始化时要分配内存,所以在类外声明 //区别于定义的全局变量,要加Stu::命名空间
//<span style="color:#ff0000;">在类外声明静态函数时要省略static,和静态变量的声明类似</span> void f(int & a){ a+=1; } int main(){ ///cout<<n<<endl; //n=3; //****************************************************静态变量********************************************************** //********静态成员变量和函数的访问规则 cout<<Stu::getNum()<<endl; cout<<Stu::num<<endl; Stu a; cout<<a.num<<endl; cout<<a.getNum()<<endl; for(int i=0;i<10;i++){ static int n;//在程序块中声明只会被初始化一次 //该变量的值会一直保存,直到下一次该函数再次被调用 //该函数结束的时候,n的内存不会被释放,而是在整个程序结束的时候被释放 //该变量不能在函数之外被访问 //ps:以上说的函数是指一个程序块{} //优势在于如果是在f()内定义的话,变量的值保存到下次被调用 cout<<n<<endl; n++; } //cout<<" "<<n<<endl; // f(n); //静态全局变量不能被别的文件调用,但是可以被函数赋值修改 //而extern int n定义之后如果在别的文件中声明extern int 的话可以调用 //cout<<" "<<n<<endl; //*******************************************************静态函数******************************************************* // 只能在本文件中使用,其他文件中定义相同的名字不会有重名的冲突 return 0; } //*********************** //小结 // 1) 静态变量 和 静态成员变量 可以统一理解, // 把类看作一个函数 // 或者把函数看作一个拥有命名空间的类 // 2) 静态函数用的不多,静态成员函数访问规则和理解也都见注释 // // 版权所有,仿冒会有道德谴责
</pre><pre>
相关文章推荐
- 关于js深入理解:json作为函数参数 类似于jQuery的post函数,具有url,data ,和回调函数
- 关于理解Perl的fork函数的一个范例
- 关于函数strtok和strtok_r的理解
- 关于gets函数和fgets函数的一些理解
- 绑定函数【OpenGL】关于OpenGL中Bind函数的理解
- 关于通过.NET Framework 2.0 中 SqlDataSource 控件 Select,Update,Delete,Insert 接口调用 存储过程 的粗浅理解。
- 关于函数指针的理解(指向的函数返回值又是另外一个函数指针)
- 关于参考帧中的x264_reference_update函数的补充及h->frames.unused[]的理解 .
- 关于C语言中main()函数的理解
- C++关于this指针、静态变量和静态成员函数 http://www.cnblogs.com/clrmas/archive/2010/03/23/1692893.htm
- 关于函数指针的一些理解与其他相关内容的联想
- 关于DC和SelectObject()函数的理解
- lambda 函数的粗浅理解
- 关于函数返回值的一些理解
- 关于C++中在函数中按值返回、临时对象、拷贝构造函数的一点理解
- 关于参考帧中的x264_reference_update函数的补充及h->frames.unused[]的理解
- 关于inline hook中函数地址计算的理解
- Vc中关于DC(设备环境函数(Device Context))的理解
- 【OpenGL】关于OpenGL中Bind函数的理解
- 关于C++——理解C++默默编写并调用了哪些函数&&函数初始化式(初始化列表相关)