当我声明并初始化一个const对象时.
// ConstClass.h
class ConstClass
{
};
const ConstClass g_Const;
Run Code Online (Sandbox Code Playgroud)
两个cpp文件包含此标头.
// Unit1.cpp
#include "ConstClass.h"
#include "stdio.h"
void PrintInUnit1( )
{
printf( "g_Const in Unit1 is %d.\r\n", &g_Const );
}
Run Code Online (Sandbox Code Playgroud)
和
// Unit2.cpp
#include "ConstClass.h"
#include "stdio.h"
void PrintInUnit2( )
{
printf( "g_Const in Unit2 is %d.\r\n", &g_Const );
}
Run Code Online (Sandbox Code Playgroud)
当我构建解决方案时,没有链接错误,你会得到什么如果g_Const是一个非const基本类型!
PrintInUnit1()和PrintInUnit2()表明在两个编译单元中有两个独立的"g_Const"具有不同的地址,为什么?
==============
我知道如何修复它.(使用extern关键字进行声明,并在一个cpp文件中定义它.)
我想知道为什么我在这个示例中没有得到redfined链接错误.