由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - static vector 怎么 initialize ?
相关主题
c++ 一问请问如何把初始化一个const 的vector (or array) in a class?
问一个java基础的初始化的问题,一直搞不明白static variable存在heap还是stack?
static initialization dependency c++vector在constructor里初始化
c++ 不自动initialize变量么?[合集] 为什么 const member 不能是 static.
再问C++初始化问题。Is it possible to initialize container in initialization list?
关于C/C++里的Static variable的memory allocation/initializaTest your C++ knowledge...
C++: Static initialization dependencywill static/global var be initialized to 0 in C/C++
抠字眼:assignment and initialize in C++[合集] which design pattern is used if a static variable insid
相关话题的讨论汇总
话题: static话题: vector话题: string话题: initialize话题: 初始化
进入Programming版参与讨论
1 (共1页)
m*********g
发帖数: 646
1
请问有什么好方法么?谢谢!
r*******y
发帖数: 1081
2
和普通的initialize 没区别吧?

【在 m*********g 的大作中提到】
: 请问有什么好方法么?谢谢!
m*********g
发帖数: 646
3
那你给个例子?

【在 r*******y 的大作中提到】
: 和普通的initialize 没区别吧?
r*******y
发帖数: 1081
4
static vector v;

【在 m*********g 的大作中提到】
: 那你给个例子?
m*********g
发帖数: 646
5
你这是declare, 同学。我问的是initialize.

【在 r*******y 的大作中提到】
: static vector v;
r*******y
发帖数: 1081
6
it is initialization. try this
static vector v;
cout < the output is 0, which means v is initialized with empty string.

【在 m*********g 的大作中提到】
: 你这是declare, 同学。我问的是initialize.
m*********g
发帖数: 646
7
我对你无语了。
你知道为什么要用一个static member么?你这有什么用?

【在 r*******y 的大作中提到】
: it is initialization. try this
: static vector v;
: cout <: the output is 0, which means v is initialized with empty string.

r*******y
发帖数: 1081
8
could you post your code to see what is wrong ?
I am confused too.

【在 m*********g 的大作中提到】
: 我对你无语了。
: 你知道为什么要用一个static member么?你这有什么用?

m*********g
发帖数: 646
9
that is because you have even NO idea/exp about static member, rt ?

【在 r*******y 的大作中提到】
: could you post your code to see what is wrong ?
: I am confused too.

r*******y
发帖数: 1081
10
I will wait for other people's solution.

【在 m*********g 的大作中提到】
: that is because you have even NO idea/exp about static member, rt ?
相关主题
关于C/C++里的Static variable的memory allocation/initializa请问如何把初始化一个const 的vector (or array) in a class?
C++: Static initialization dependencystatic variable存在heap还是stack?
抠字眼:assignment and initialize in C++vector在constructor里初始化
进入Programming版参与讨论
S**I
发帖数: 15689
11
wrap it into another class and use an object of that class as static member
instead.

【在 m*********g 的大作中提到】
: 请问有什么好方法么?谢谢!
m*********g
发帖数: 646
12
Is any easier way possible?

member

【在 S**I 的大作中提到】
: wrap it into another class and use an object of that class as static member
: instead.

S**I
发帖数: 15689
13
initialized as usual:
vector A::s(10, "");

【在 m*********g 的大作中提到】
: Is any easier way possible?
:
: member

m*********g
发帖数: 646
14
what if I want this static vector to store "ABC" "DEF" "GHI" ?

【在 S**I 的大作中提到】
: initialized as usual:
: vector A::s(10, "");

S**I
发帖数: 15689
15
you can initialize an array, then use that array to initialize the vector:
string a[] = {"ABC", "DEF", "GHI"};
vector A::s(a, a+sizeof(a)/sizeof(a[0]));

【在 m*********g 的大作中提到】
: what if I want this static vector to store "ABC" "DEF" "GHI" ?
t****t
发帖数: 6806
16
now that's the correct way to ask question. initialize? with what? you have
to be specific. initialize with empty vector is initialize too, and it doesn
't matter whether you have static object or not.
experienced ppl may have guessed what you need, but most ppl won't.
now here is the answer. there is no decent way to do this in c++03. you may
define const char* array and initialize with it, but you add extra objects.
it's ugly and easy to make mistakes.
c++0x added std::initializer_list<>, which is exactly what you need.

【在 m*********g 的大作中提到】
: what if I want this static vector to store "ABC" "DEF" "GHI" ?
m*********g
发帖数: 646
17
I really don't want to argue with ppl on BBS. Ok, whatever you say.
I just assume ppl are experienced here, and know an empty static vector is
useless except showing some correct "book knowledge".
But thanks for your input. I know the way to use a static array but still it
helps, especially abt the c++OX.

have
doesn
may
.

【在 t****t 的大作中提到】
: now that's the correct way to ask question. initialize? with what? you have
: to be specific. initialize with empty vector is initialize too, and it doesn
: 't matter whether you have static object or not.
: experienced ppl may have guessed what you need, but most ppl won't.
: now here is the answer. there is no decent way to do this in c++03. you may
: define const char* array and initialize with it, but you add extra objects.
: it's ugly and easy to make mistakes.
: c++0x added std::initializer_list<>, which is exactly what you need.

h********n
发帖数: 1671
18
向别人问问题起码要虚心一点,自己问的不清楚也不能责怪别人,别人来回答已经是很
热心了。
static变量可以用一个函数的返回值来初始化,可以任意复杂,也不限于class member
。但是复杂数据结构的static变量最好不要进行复杂的初始化。如果只是book
knowledge,最好是直接用char* array,不要用vector。如果必需要用有复杂
数据结构的static变量,最好是先缺省初始化为empty,然后在main()里动态的进行初
始化。
using namespace std;
struct A
{
static vector v;
static vector f(){ vector v; v.push_back("123"); v.push_back
("abc"); return v;}
};
vector A::v = A::f();
int main()
{
cout << A::v[0] << " " << A::v[1] << endl;
}
m*********g
发帖数: 646
19
觉得动态的进行初始化这个做法会 confuse 别人,别人在用这个class的时候会不知道
它是什么,也许不是一个很好的design。

member

【在 h********n 的大作中提到】
: 向别人问问题起码要虚心一点,自己问的不清楚也不能责怪别人,别人来回答已经是很
: 热心了。
: static变量可以用一个函数的返回值来初始化,可以任意复杂,也不限于class member
: 。但是复杂数据结构的static变量最好不要进行复杂的初始化。如果只是book
: knowledge,最好是直接用char* array,不要用vector。如果必需要用有复杂
: 数据结构的static变量,最好是先缺省初始化为empty,然后在main()里动态的进行初
: 始化。
: using namespace std;
: struct A
: {

h**********c
发帖数: 4120
20
好像这样吧
some.h
class c {
static std::vector sv;
public:
}
some.cpp
std::vector c::sv ;
最少visual c++ 是这样,
如何解释呢,header 里的东西不会成为memory instance,只有cpp 里才可以。
相关主题
[合集] 为什么 const member 不能是 static.will static/global var be initialized to 0 in C/C++
Is it possible to initialize container in initialization list?[合集] which design pattern is used if a static variable insid
Test your C++ knowledge...不明白C++的一个地方
进入Programming版参与讨论
h********n
发帖数: 1671
21
别人需要看的是声明,而不是定义。到.cpp里看定义才知道它是什么,这样更confuse
别人。
进入main()以后进行实质的初始化,可以保证这时所有变量都已经处在valid状态。你
这个例子用的都是库类型,还问题不大。如果某一天你换成了自己的string类,或者改
用自己的allocator,那这种静态初始化的用法就是一个定时炸弹,不知什么地方就有
可能会引用到一个还没有初始化的变量。
原则上static变量的初始状态都应该尽可能简单。把复杂的参数写进构造函数参数列表
,与用一个函数来初始化没有区别,因为构造函数也是一个函数,只是语法不同。
前面的几个答案里,初始化为empty的那个才是最好的design,有经验的人都会这样写
。其他几个答案不过是为了满足你这个奇怪的用法而凑出来的。
另一方面,如果你不打算进行动态修改的话,为什么要用vector?这时用char
*[]是最合理的。如果你打算在程序中进行动态修改的话,动态初始化自然也很正常。

【在 m*********g 的大作中提到】
: 觉得动态的进行初始化这个做法会 confuse 别人,别人在用这个class的时候会不知道
: 它是什么,也许不是一个很好的design。
:
: member

l*********s
发帖数: 5409
22
Agree, bad practices are bad no matter how fancy codes look. Combo of C++ and full-of-oneself attitude is a perfect recipe for disasters.

confuse

【在 h********n 的大作中提到】
: 别人需要看的是声明,而不是定义。到.cpp里看定义才知道它是什么,这样更confuse
: 别人。
: 进入main()以后进行实质的初始化,可以保证这时所有变量都已经处在valid状态。你
: 这个例子用的都是库类型,还问题不大。如果某一天你换成了自己的string类,或者改
: 用自己的allocator,那这种静态初始化的用法就是一个定时炸弹,不知什么地方就有
: 可能会引用到一个还没有初始化的变量。
: 原则上static变量的初始状态都应该尽可能简单。把复杂的参数写进构造函数参数列表
: ,与用一个函数来初始化没有区别,因为构造函数也是一个函数,只是语法不同。
: 前面的几个答案里,初始化为empty的那个才是最好的design,有经验的人都会这样写
: 。其他几个答案不过是为了满足你这个奇怪的用法而凑出来的。

l********e
发帖数: 34
23
是的,是这样的。
我的理解是:C++标准禁止在头文件中定义静态变量,是因为静态变量在程序里只有一
个copy.
如果在头文件中定义就有被多次初始化的风险(因为头文件能够被include多次)。

【在 h**********c 的大作中提到】
: 好像这样吧
: some.h
: class c {
: static std::vector sv;
: public:
: }
: some.cpp
: std::vector c::sv ;
: 最少visual c++ 是这样,
: 如何解释呢,header 里的东西不会成为memory instance,只有cpp 里才可以。

x****u
发帖数: 44466
24
对于C++来说,只有一种源文件。
所以你应该了解一下什么东西可以写多次,什么只能写一次。

【在 l********e 的大作中提到】
: 是的,是这样的。
: 我的理解是:C++标准禁止在头文件中定义静态变量,是因为静态变量在程序里只有一
: 个copy.
: 如果在头文件中定义就有被多次初始化的风险(因为头文件能够被include多次)。

l********e
发帖数: 34
25
Could you elaborate a little bit for this problem?

【在 x****u 的大作中提到】
: 对于C++来说,只有一种源文件。
: 所以你应该了解一下什么东西可以写多次,什么只能写一次。

x****u
发帖数: 44466
26
实体只能define一次,但是可以declare多次。

【在 l********e 的大作中提到】
: Could you elaborate a little bit for this problem?
t****t
发帖数: 6806
27
c++ 标准显然没有禁止过这回事. 一般的说, 建议不要在头文件里定义对象, 这是对的.

【在 l********e 的大作中提到】
: 是的,是这样的。
: 我的理解是:C++标准禁止在头文件中定义静态变量,是因为静态变量在程序里只有一
: 个copy.
: 如果在头文件中定义就有被多次初始化的风险(因为头文件能够被include多次)。

h********n
发帖数: 1671
28
补充一点,static的或是unnamed namespace中的全局变量可以定义在头文件中,当然
不建议这样做。整数类型的static const没问题。template的static变量和inline函数
当中的static变量,就只能定义在头文件中了。
其它情况,不是被多次初始化的风险,而是无法链接。

【在 l********e 的大作中提到】
: 是的,是这样的。
: 我的理解是:C++标准禁止在头文件中定义静态变量,是因为静态变量在程序里只有一
: 个copy.
: 如果在头文件中定义就有被多次初始化的风险(因为头文件能够被include多次)。

l********e
发帖数: 34
29
受教了。

【在 h********n 的大作中提到】
: 补充一点,static的或是unnamed namespace中的全局变量可以定义在头文件中,当然
: 不建议这样做。整数类型的static const没问题。template的static变量和inline函数
: 当中的static变量,就只能定义在头文件中了。
: 其它情况,不是被多次初始化的风险,而是无法链接。

m*********g
发帖数: 646
30
请问有什么好方法么?谢谢!
相关主题
static 变量放在哪里?C++问一个java基础的初始化的问题,一直搞不明白
Initialization list的一个问题static initialization dependency c++
c++ 一问c++ 不自动initialize变量么?
进入Programming版参与讨论
r*******y
发帖数: 1081
31
和普通的initialize 没区别吧?

【在 m*********g 的大作中提到】
: 请问有什么好方法么?谢谢!
m*********g
发帖数: 646
32
那你给个例子?

【在 r*******y 的大作中提到】
: 和普通的initialize 没区别吧?
r*******y
发帖数: 1081
33
static vector v;

【在 m*********g 的大作中提到】
: 那你给个例子?
m*********g
发帖数: 646
34
你这是declare, 同学。我问的是initialize.

【在 r*******y 的大作中提到】
: static vector v;
r*******y
发帖数: 1081
35
it is initialization. try this
static vector v;
cout < the output is 0, which means v is initialized with empty string.

【在 m*********g 的大作中提到】
: 你这是declare, 同学。我问的是initialize.
m*********g
发帖数: 646
36
我对你无语了。
你知道为什么要用一个static member么?你这有什么用?

【在 r*******y 的大作中提到】
: it is initialization. try this
: static vector v;
: cout <: the output is 0, which means v is initialized with empty string.

r*******y
发帖数: 1081
37
could you post your code to see what is wrong ?
I am confused too.

【在 m*********g 的大作中提到】
: 我对你无语了。
: 你知道为什么要用一个static member么?你这有什么用?

m*********g
发帖数: 646
38
that is because you have even NO idea/exp about static member, rt ?

【在 r*******y 的大作中提到】
: could you post your code to see what is wrong ?
: I am confused too.

r*******y
发帖数: 1081
39
I will wait for other people's solution.

【在 m*********g 的大作中提到】
: that is because you have even NO idea/exp about static member, rt ?
S**I
发帖数: 15689
40
wrap it into another class and use an object of that class as static member
instead.

【在 m*********g 的大作中提到】
: 请问有什么好方法么?谢谢!
相关主题
c++ 不自动initialize变量么?C++: Static initialization dependency
再问C++初始化问题。抠字眼:assignment and initialize in C++
关于C/C++里的Static variable的memory allocation/initializa请问如何把初始化一个const 的vector (or array) in a class?
进入Programming版参与讨论
m*********g
发帖数: 646
41
Is any easier way possible?

member

【在 S**I 的大作中提到】
: wrap it into another class and use an object of that class as static member
: instead.

S**I
发帖数: 15689
42
initialized as usual:
vector A::s(10, "");

【在 m*********g 的大作中提到】
: Is any easier way possible?
:
: member

m*********g
发帖数: 646
43
what if I want this static vector to store "ABC" "DEF" "GHI" ?

【在 S**I 的大作中提到】
: initialized as usual:
: vector A::s(10, "");

S**I
发帖数: 15689
44
you can initialize an array, then use that array to initialize the vector:
string a[] = {"ABC", "DEF", "GHI"};
vector A::s(a, a+sizeof(a)/sizeof(a[0]));

【在 m*********g 的大作中提到】
: what if I want this static vector to store "ABC" "DEF" "GHI" ?
t****t
发帖数: 6806
45
now that's the correct way to ask question. initialize? with what? you have
to be specific. initialize with empty vector is initialize too, and it doesn
't matter whether you have static object or not.
experienced ppl may have guessed what you need, but most ppl won't.
now here is the answer. there is no decent way to do this in c++03. you may
define const char* array and initialize with it, but you add extra objects.
it's ugly and easy to make mistakes.
c++0x added std::initializer_list<>, which is exactly what you need.

【在 m*********g 的大作中提到】
: what if I want this static vector to store "ABC" "DEF" "GHI" ?
m*********g
发帖数: 646
46
I really don't want to argue with ppl on BBS. Ok, whatever you say.
I just assume ppl are experienced here, and know an empty static vector is
useless except showing some correct "book knowledge".
But thanks for your input. I know the way to use a static array but still it
helps, especially abt the c++OX.

have
doesn
may
.

【在 t****t 的大作中提到】
: now that's the correct way to ask question. initialize? with what? you have
: to be specific. initialize with empty vector is initialize too, and it doesn
: 't matter whether you have static object or not.
: experienced ppl may have guessed what you need, but most ppl won't.
: now here is the answer. there is no decent way to do this in c++03. you may
: define const char* array and initialize with it, but you add extra objects.
: it's ugly and easy to make mistakes.
: c++0x added std::initializer_list<>, which is exactly what you need.

h********n
发帖数: 1671
47
向别人问问题起码要虚心一点,自己问的不清楚也不能责怪别人,别人来回答已经是很
热心了。
static变量可以用一个函数的返回值来初始化,可以任意复杂,也不限于class member
。但是复杂数据结构的static变量最好不要进行复杂的初始化。如果只是book
knowledge,最好是直接用char* array,不要用vector。如果必需要用有复杂
数据结构的static变量,最好是先缺省初始化为empty,然后在main()里动态的进行初
始化。
using namespace std;
struct A
{
static vector v;
static vector f(){ vector v; v.push_back("123"); v.push_back
("abc"); return v;}
};
vector A::v = A::f();
int main()
{
cout << A::v[0] << " " << A::v[1] << endl;
}
m*********g
发帖数: 646
48
觉得动态的进行初始化这个做法会 confuse 别人,别人在用这个class的时候会不知道
它是什么,也许不是一个很好的design。

member

【在 h********n 的大作中提到】
: 向别人问问题起码要虚心一点,自己问的不清楚也不能责怪别人,别人来回答已经是很
: 热心了。
: static变量可以用一个函数的返回值来初始化,可以任意复杂,也不限于class member
: 。但是复杂数据结构的static变量最好不要进行复杂的初始化。如果只是book
: knowledge,最好是直接用char* array,不要用vector。如果必需要用有复杂
: 数据结构的static变量,最好是先缺省初始化为empty,然后在main()里动态的进行初
: 始化。
: using namespace std;
: struct A
: {

h**********c
发帖数: 4120
49
好像这样吧
some.h
class c {
static std::vector sv;
public:
}
some.cpp
std::vector c::sv ;
最少visual c++ 是这样,
如何解释呢,header 里的东西不会成为memory instance,只有cpp 里才可以。
h********n
发帖数: 1671
50
别人需要看的是声明,而不是定义。到.cpp里看定义才知道它是什么,这样更confuse
别人。
进入main()以后进行实质的初始化,可以保证这时所有变量都已经处在valid状态。你
这个例子用的都是库类型,还问题不大。如果某一天你换成了自己的string类,或者改
用自己的allocator,那这种静态初始化的用法就是一个定时炸弹,不知什么地方就有
可能会引用到一个还没有初始化的变量。
原则上static变量的初始状态都应该尽可能简单。把复杂的参数写进构造函数参数列表
,与用一个函数来初始化没有区别,因为构造函数也是一个函数,只是语法不同。
前面的几个答案里,初始化为empty的那个才是最好的design,有经验的人都会这样写
。其他几个答案不过是为了满足你这个奇怪的用法而凑出来的。
另一方面,如果你不打算进行动态修改的话,为什么要用vector?这时用char
*[]是最合理的。如果你打算在程序中进行动态修改的话,动态初始化自然也很正常。

【在 m*********g 的大作中提到】
: 觉得动态的进行初始化这个做法会 confuse 别人,别人在用这个class的时候会不知道
: 它是什么,也许不是一个很好的design。
:
: member

相关主题
static variable存在heap还是stack?Is it possible to initialize container in initialization list?
vector在constructor里初始化Test your C++ knowledge...
[合集] 为什么 const member 不能是 static.will static/global var be initialized to 0 in C/C++
进入Programming版参与讨论
l*********s
发帖数: 5409
51
Agree, bad practices are bad no matter how fancy codes look. Combo of C++ and full-of-oneself attitude is a perfect recipe for disasters.

confuse

【在 h********n 的大作中提到】
: 别人需要看的是声明,而不是定义。到.cpp里看定义才知道它是什么,这样更confuse
: 别人。
: 进入main()以后进行实质的初始化,可以保证这时所有变量都已经处在valid状态。你
: 这个例子用的都是库类型,还问题不大。如果某一天你换成了自己的string类,或者改
: 用自己的allocator,那这种静态初始化的用法就是一个定时炸弹,不知什么地方就有
: 可能会引用到一个还没有初始化的变量。
: 原则上static变量的初始状态都应该尽可能简单。把复杂的参数写进构造函数参数列表
: ,与用一个函数来初始化没有区别,因为构造函数也是一个函数,只是语法不同。
: 前面的几个答案里,初始化为empty的那个才是最好的design,有经验的人都会这样写
: 。其他几个答案不过是为了满足你这个奇怪的用法而凑出来的。

l********e
发帖数: 34
52
是的,是这样的。
我的理解是:C++标准禁止在头文件中定义静态变量,是因为静态变量在程序里只有一
个copy.
如果在头文件中定义就有被多次初始化的风险(因为头文件能够被include多次)。

【在 h**********c 的大作中提到】
: 好像这样吧
: some.h
: class c {
: static std::vector sv;
: public:
: }
: some.cpp
: std::vector c::sv ;
: 最少visual c++ 是这样,
: 如何解释呢,header 里的东西不会成为memory instance,只有cpp 里才可以。

x****u
发帖数: 44466
53
对于C++来说,只有一种源文件。
所以你应该了解一下什么东西可以写多次,什么只能写一次。

【在 l********e 的大作中提到】
: 是的,是这样的。
: 我的理解是:C++标准禁止在头文件中定义静态变量,是因为静态变量在程序里只有一
: 个copy.
: 如果在头文件中定义就有被多次初始化的风险(因为头文件能够被include多次)。

l********e
发帖数: 34
54
Could you elaborate a little bit for this problem?

【在 x****u 的大作中提到】
: 对于C++来说,只有一种源文件。
: 所以你应该了解一下什么东西可以写多次,什么只能写一次。

x****u
发帖数: 44466
55
实体只能define一次,但是可以declare多次。

【在 l********e 的大作中提到】
: Could you elaborate a little bit for this problem?
t****t
发帖数: 6806
56
c++ 标准显然没有禁止过这回事. 一般的说, 建议不要在头文件里定义对象, 这是对的.

【在 l********e 的大作中提到】
: 是的,是这样的。
: 我的理解是:C++标准禁止在头文件中定义静态变量,是因为静态变量在程序里只有一
: 个copy.
: 如果在头文件中定义就有被多次初始化的风险(因为头文件能够被include多次)。

h********n
发帖数: 1671
57
补充一点,static的或是unnamed namespace中的全局变量可以定义在头文件中,当然
不建议这样做。整数类型的static const没问题。template的static变量和inline函数
当中的static变量,就只能定义在头文件中了。
其它情况,不是被多次初始化的风险,而是无法链接。

【在 l********e 的大作中提到】
: 是的,是这样的。
: 我的理解是:C++标准禁止在头文件中定义静态变量,是因为静态变量在程序里只有一
: 个copy.
: 如果在头文件中定义就有被多次初始化的风险(因为头文件能够被include多次)。

l********e
发帖数: 34
58
受教了。

【在 h********n 的大作中提到】
: 补充一点,static的或是unnamed namespace中的全局变量可以定义在头文件中,当然
: 不建议这样做。整数类型的static const没问题。template的static变量和inline函数
: 当中的static变量,就只能定义在头文件中了。
: 其它情况,不是被多次初始化的风险,而是无法链接。

r****t
发帖数: 10904
59
这个地方 vector A::v = A::f();
这一句没有像你说的一样写在 main() 里面,是笔误,还是就应该在外面?

member
struct A
{
static vector v;
static vector f(){ vector v; v.push_back("123"); v.push_back
("abc"); return v;}
};
vector A::v = A::f();
int main()
{
cout << A::v[0] << " " << A::v[1] << endl;
}.

【在 h********n 的大作中提到】
: 向别人问问题起码要虚心一点,自己问的不清楚也不能责怪别人,别人来回答已经是很
: 热心了。
: static变量可以用一个函数的返回值来初始化,可以任意复杂,也不限于class member
: 。但是复杂数据结构的static变量最好不要进行复杂的初始化。如果只是book
: knowledge,最好是直接用char* array,不要用vector。如果必需要用有复杂
: 数据结构的static变量,最好是先缺省初始化为empty,然后在main()里动态的进行初
: 始化。
: using namespace std;
: struct A
: {

z****e
发帖数: 2024
60
"unnamed namespace中的全局变量"???
unnamed namespace 本来就是只有internal linkage,何谈全局?
"整数类型的static const没问题"???
用不着static,和整数,const默认就是internal linkage的。
“inline函数当中的static变量,就只能定义在头文件中了”???
定义在cpp中完全没有问题。

【在 h********n 的大作中提到】
: 补充一点,static的或是unnamed namespace中的全局变量可以定义在头文件中,当然
: 不建议这样做。整数类型的static const没问题。template的static变量和inline函数
: 当中的static变量,就只能定义在头文件中了。
: 其它情况,不是被多次初始化的风险,而是无法链接。

1 (共1页)
进入Programming版参与讨论
相关主题
[合集] which design pattern is used if a static variable insid再问C++初始化问题。
不明白C++的一个地方关于C/C++里的Static variable的memory allocation/initializa
static 变量放在哪里?C++C++: Static initialization dependency
Initialization list的一个问题抠字眼:assignment and initialize in C++
c++ 一问请问如何把初始化一个const 的vector (or array) in a class?
问一个java基础的初始化的问题,一直搞不明白static variable存在heap还是stack?
static initialization dependency c++vector在constructor里初始化
c++ 不自动initialize变量么?[合集] 为什么 const member 不能是 static.
相关话题的讨论汇总
话题: static话题: vector话题: string话题: initialize话题: 初始化