【发布时间】:2017-10-15 20:38:06
【问题描述】:
我想尝试外部链接和不完整的类型声明并写了这个例子:
来源.cpp:
//Source.cpp
class A {
public:
int a=10;
};
A* var1 = new A();
void printA(A* arg)
{
cout << arg->a << endl;
}
Source1.cpp:
//Source1.cpp
class A
{
public:
int b = 20;
int c = 30;
};
A* var2 = new A();
void printB(A* a)
{
std::cout << a->b;
}
main.cpp:
//main.cpp
class A;
extern A* var1;
extern A* var2;
int main()
{
void printA(A*);
void printB(A*);
printA(var1); //Prints 10
printA(var2); //Prints 10
printB(var2); //Prints 10
return 0;
}
在printA() 的第一次调用之后,正如我所料的那样打印“10”。但是为什么printA()和printB()第二次调用后也打印出“10”呢?
【问题讨论】:
标签: c++ extern incomplete-type