在C++编程的时候,如果一个类中的多个函数都调用同一个类的函数,就应该在调用类中定义一个被调用类的全局实例,而不应该在每个函数中都定义一个被调用类的实例。简单的说,如果A类种的多个函数都调用B类的函数,则应该在A类中定义B类的全局实例,详见代码:
//B.cpp
int g_nAbc;
class B
{
B()
{
g_nAbc = 0;
}
~B()
{
}
int BTestA()
{
return g_nAbc;
}
int BTestB(int a)
{
return g_nAbc + a;
}
};
//A.cpp
B *pB;
class A
{
A()
{
pB = new B();
}
~A()
{
}
ATestA()
{
pB->BTestA();
pB->BTestA();
}
ATestB()
{
pB->BTestA();
pB->BTestA();
}
};
如果将*pB的定义都拿到函数定义的内部,将造成在后面调用类B中的函数的返回结果错误。