如何初始化类的static成员变量?

简介:

如何初始化类的static成员变量?

类的static成员变量不被某一个对象所独有,而是被所有同类型的对象所共有。

只能在头文件中声明类的static成员变量,不可在头文件中初始化,否则会造成重定义。必须在另外一个.cpp文件中进行初始化。并且,初始化的时候不可以有static修饰词。


frank@userver:~/project/test/static-test/static2_cpp$ cat static.h

#ifndef STATIC_H

#define STATIC_H


#include<iostream>

using std::cout;

using std::endl;


class TestType{

    static int m_static;

public:

    TestType(int dat = 0) {}

    void Show()const{

        cout << "this=" << this << ", ";

        cout << "m_static:(" << &m_static << ", " << m_static << ")\n";

    }

};


#endif // #ifndef STATIC_H

frank@userver:~/project/test/static-test/static2_cpp$ cat static.cpp 

#include "static.h"

int TestType::m_static = 15;

frank@userver:~/project/test/static-test/static2_cpp$ cat test.h 

#ifndef TEST_H

#define TEST_H

void test();

#endif // #ifndef TEST_H


frank@userver:~/project/test/static-test/static2_cpp$ cat test.cpp 

#include "test.h"

#include "static.h"


void test(){

    cout << __func__ << endl;

    TestType obj(5);

    obj.Show();

}

frank@userver:~/project/test/static-test/static2_cpp$ cat main.cpp 

#include "static.h"

#include "test.h"


int main(){

    cout << __func__ << endl;

    TestType obj(4);

    obj.Show();

    test();

}

frank@userver:~/project/test/static-test/static2_cpp$ g++ main.cpp test.cpp static.cpp 

frank@userver:~/project/test/static-test/static2_cpp$ ./a.out 

main

this=0x7fff309db27f, m_static:(0x602078, 15)

test

this=0x7fff309db25f, m_static:(0x602078, 15)

frank@userver:~/project/test/static-test/static2_cpp$ 




      本文转自FrankNie0101 51CTO博客,原文链接:http://blog.51cto.com/frankniefaquan/1936705,如需转载请自行联系原作者






相关文章
|
6月前
|
C语言
学习static定义静态变量
学习static定义静态变量。
65 4
|
1月前
学习 static 定义静态变量的用法
学习 static 定义静态变量的用法。
46 13
|
6月前
|
存储 设计模式 算法
[C++] static静态成员变量/函数的用法
[C++] static静态成员变量/函数的用法
84 1
|
6月前
|
C语言
C11中类成员变量定义时初始化问题
C11中类成员变量定义时初始化问题
69 0
|
SQL 分布式计算 Java
spark hiveUDF 不要定义static成员变量
spark hiveUDF 不要定义static成员变量
361 1
构造函数被private修饰后只能通过静态方法获得实例
构造函数被private修饰后只能通过静态方法获得实例
83 0
|
Java 测试技术
成员变量初始化的问题
成员变量初始化的问题
|
前端开发 程序员 开发者
class-使用 static 创建静态属性|学习笔记
快速学习 class-使用 static 创建静态属性
121 0