zoukankan      html  css  js  c++  java
  • 静态数据成员和静态成员函数

    静态成员函数如何初始化

    #include <iostream>
    using namespace std;
    
    class Test {
    private:
    	static int statica;
    	int b;
    public:
    //	Test(): statica(1) {};		//错误!static数据成员不能通过初始化列表初始化。
    	Test(): b(1) {statica = 1;};	//正确。
    };
    
    int main(void)
    {
    	return 0;
    }
    
    
    
     
     
     
     
    #include <iostream>
    using namespace std;
    
    class Test {
    private:
    	static int statica;
    	int b;
    };
    
    int Test::statica = 1;	//static成员的一般初始化方法。
    
    int main(void)
    {
    	return 0;
    }
    

    如何访问静态数据成员

    静态数据成员是类的数据成员,但不是对象的组成部分。那么在没定义任何对象的情况下,如何读取静态成员的初始值呢?

    (也许会想到用 类名::静态数据成员,但是如果该静态数据成员是private的,那么不能这样访问!)

    答案是通过静态成员函数。

    静态成员函数不含this指针,因此不能直接访问类的非静态数据成员!(可间接通过参数传递对象名访问)

    补充:静态数据成员和静态成员函数可以通过类名访问,也可以通过对象访问。

    如下例子:

    #include <iostream>
    using namespace std;
    
    class Test {
    private:
    	static int statica;
    public:
    	static int getStatica()  //通过静态成员函数访问静态数据成员。
    	{
    		return statica;
    	}
    };
    
    int Test::statica = 1;	
     
    int main(void)
    {
    	cout << Test::getStatica();
    	return 0;
    }
    

    特例static const

    static const 类型的成员可以在类的定义体中初始化。

    #include <iostream>
    using namespace std;
    
    class Test {
    private:
    	const static int consta = 1;
    };
    
    int main(void)
    {
    	return 0;
    }
    
  • 相关阅读:
    全端开发必备!10个最好的 Node.js MVC 框架
    action和servlet的关系
    js模块化
    前端类库
    Windows下配置nginx+php(wnmp)
    DllMain的作用
    在linux上实现DllMain + 共享库创建方法
    QT实现Windows下DLL程序编写
    平台相关的宏
    远程线程的注入 PE的修正
  • 原文地址:https://www.cnblogs.com/helloweworld/p/2833776.html
Copyright © 2011-2022 走看看