static成员和static成员函数
来源:互联网 发布:网络黄金egd怎么回事 编辑:程序博客网 时间:2024/06/08 19:51
下面用一个简单的程序加以理解
- #include <iostream>
- #include <string>
- using namespace std;
- class Test
- {
- public:
- static int j;
- static void init();//init定义为static 或非static都可以修改static成员i的值
- static int revise_i(int x);
- int get_i();
- //由于没有this指针,static成员函数不能反问对象的非static成员,用static输出k是非法的
- private:
- static int i;
- int k;
- const static int r = 1; //只有const static 成员在类定义时初始化
- //若将上面的i直接初始化,编译时报错
- };
- //外部定义时不能再标示static
- int Test::i=0; //very important:外部定义(正好一次),之后i只能通过init修改
- int Test::j=5; //j为public,之后可以直接访问和修改
- void Test::init()
- {
- i=10;
- }
- int Test::get_i()
- {
- return i;
- }
- int Test::revise_i(int x)
- {
- i = x;
- return i;
- }
- int main()
- {
- Test obj;
- cout << obj.get_i() << endl; //通过
- obj.init(); //私有的静态成员只能通过类的静态成员函数进行修改
- cout << obj.get_i() << endl;
- cout << Test::j << endl;
- obj.j = 15; //公有的静态成员可以直接进行修改,访问方式可以obj.j或者Test::j
- Test::revise_i(555);
- cout << "after revise_i, i = " << obj.get_i() << endl;
- cout << Test::j << endl;
- system("pause");
- return 0;
- }
static成员函数不可以声明为const的原因:
这是C++的规则const修饰符用于表示函数不能修改成员变量的值,该函数必须是含有this指针的类成员函数,函数调用方式为thiscall而类中的static函数本质上是全局函数,调用规约是__cdecl或__stdcall,不能用const来修饰。
- static成员和static成员函数
- static成员和static成员函数
- static成员和static成员函数
- c++static数据成员和成员函数
- static 数据成员和函数成员
- java static成员变量和成员函数
- class 的static成员变量和 static 成员函数
- C++类中的static数据成员和static成员函数
- static成员函数成员变量
- static数据成员与static成员函数
- Static成员变量,static成员函数解析
- static成员函数访问非static成员
- const成员 和 static成员
- static ---静态成员函数
- const/static 成员函数
- static 静态成员函数
- static成员函数
- static 静态成员函数
- zlib的使用
- JOB改造-数据来源
- 经济类图书推荐--转自水木
- mac工具-解析json
- 如何在Myeclipse中修改名称
- static成员和static成员函数
- Linux移植过程中的一些错误
- 统计项目代码总行数
- JAVA编程心得-Eclipse/MyEclipse 中文乱码解决办法
- windows环境DLL链接问题之二:C/C++修饰符问题
- C语言基础知识——关键字之volatile
- 跟我一起写Makefile文件(上)
- 如何选购地板砖
- uploadify(或swfupload)刷新页面时IE下不断报JS Error的bug的处理