我刚才做了一个实验:<br>//a.cpp <br>#include <string><br><br>std::string i<br><br>//b.cpp<br>#include <iostream><br>#include <string><br><br>extern std::string i<br><br>int main ()<br>{<br>std::cout <<i <<std::endl<br>}<br><br>运行结果为:<br><br>(上面是一空行:由于末尾用了endl)<br><br>如果没有a.cpp这个文件,运行出错<br>这是一对实验(有没有a.cpp文件)<br><br>可得出这样的结论:<br>a.cpp中std::string i是定义(本来就是)<br>b.cpp中extern std::string i则是声明(你的问题)<br><br>先别急,这只是实验结果。我们还需要理论依据,那么下面就试着解释一下:<br><br>下面是另一个例子(也是第二个实验)<br>你应该知道内置
类型(int等)如果作为全局变量时,定义的同时也就
初始化了(一个内置类型有其对应的默认值;如果你将
自定义类型也看成内置类型,那么就等于说,一个自定义类型有其对应的默认值(由默认构造函数完成))。如<br>//c.cpp<br>int i<br><br>//d.cpp<br>#include <iostream><br><br>extern int i<br><br>int main ()<br>{<br>std::cout <<i <<std::endl<br>}<br><br>那么在这里int i就是定义(并且初始化了i,初始值为0)<br>因而输出结果为<br>0<br>//这个实验的运行结果符合理论依据。<br>(我使用的编译器是visual studio 2008)<br><br><br>从这两个实验来看:(将两个“默认”等同起来)<br>int i<br>std::string i<br>都可以作为初始化i的定义性语句。<br>那么<br>extern int i<br>extern std::string i<br>也具有定义行为(这个很明显与extern的用法相悖)<br><br>在以上两个试验中:int 与 string 有“区别”吗?所有的代码都一样只不过把std::string 换成了 int而已!如果你能解释int的情况,那么我想std::string问题也就迎刃而解了!<br><br>于是我个人总结出一个结论:<br> 不论是内置类型还是自定义类型,前面有extern关键字,如果没有显式地初始化参数(即就是自定义类型的默认构造函数被extern屏蔽了,不起初始化的作用),那么就按声明对待。<br> 麻烦采纳·····╭╮
(ˋ. ⌒
╭ � ╯.≈..
ˊ╰╯ ┌.|囿⒈兲祢会倁檤
┌.|公?饥蒂庵莹�?
┌.|地铁⒍兮钟ǐ班
┌.|苛我钔dě瑷
┌.|枽浒⒈班僦í辈子!
﹍ρsァ.2⒋小时゛都「唏望」侑鉨ˋ ̄洅莪身笾!
┼—————————┼
│ˊ , │°羙?啲囘忆.
│' .ˊ ˋ@. │
│ ╭⌒╮ `ˊ │僦像气萢.
│ˊ( .' ) '│
│ ﹏_)(﹏. │ 烟消云散..
│``~﹊`}~﹊}~`~ '│
┼—————————┼ ɑ .闪闪夺目
の断 「老天摆不平.命运我搞定」 点の
┞┮┟┱
—╃━╭╮
━—┶┱— ┍╀┑ ' \/
ヽ│ 待 ┕╁┚ ′ ○
の) -
) \
│ ヤ 緈福繻喓谁去争取? .﹎``
反正βμ是硪ˋの ﹏.
.oσ
╭⌒ ╭╭╮ ⌒╮
)) ╲╱ ))
〣.当﹎?幂询d(?茫?谙肫鹚�m?ο
ㄗs:╭ァ为什麽爷爷
**喜欢脑白金o○
、
ˋの ′o黒o黒..┈
′ˋ
☆━━
\ '
`^ ★.、
' \ .终迂朙絔..。
˙茹果汰暧壹个? *`
′最后受伤最深dě还是自鱾.┐
「鰗牃洅镁终飞鈈?汔恕??
•、
☆﹌~
╭つ'°._..˙,.
?洅羙逦啲糀朶 ..
?吔会凋谢?
?相?蹎瑬Z﹏_.
?到蕞后还湜会纷开.?..
`}﹊}}﹊}
┌__回忆>.洅媄yě 祗諟曾经 .!'
.☆╳╲ ‐
╲╳★.
s'**的"'〉`
都给佬仔诡下‐
唱!
нōнō!
..゛ 、单曲连播ī?ɡ..﹏ `?
z╭ ?╮╭ ﹌╮。
z(o-.-o)(o-.-o) .oО 呼噜zzОo
╭~﹊} ̄~﹊} ̄~、
┋? ﹏ ?、
┊﹏ ┊你有资格和我睡吗?
┇ ? ﹏ ? ┋
在 ┼———————————☆
二 │┉|人这⒈?|
零 │ ˊ釶许繻喓嘚詪少丶
零 │⒈柸氺⒈碗饭⒈佝莪?蹔叄?br /> 四 │ ˊ怛莪浠望.丶
当 │ 氺昰?玫箛N'饭昰你做啲.
好 │ˊ⒈佝莪?蹔呚?br /> 人 ☆ˊ昰你亲扣对莪说绌扣啲
*@
╭?%╮ ╭'''╮
(@^o^@) (⌒:⌒)
(~) ~) (~)v(~)﹏
╭《╮
(ㄗs
╰》╯ ﹎「⒉个朲.」‐*`ī.◆>
' . . .^评评啖啖才是眞.
.细氺长锍才是?郓a?
? .对你⒈?并氽姗n.☆绝卟硴?瞏
( ``_﹏ ?◣ 把深爱的人``~﹏
) (我等你)?*?
) ╱?? の名字~~
( (╱╲╱
) ╱ ╱写在烟上╭慢慢吸进肺里
( ╱ ╱
)╱ ╱ 是离心脏最近的地方
╋ㄗs:◇ .{要记dёァWǒ在等?氓?nbsp◇我真的好想你
╭ 罘想聦朙