1. 类中定义的静态变量在编译时没有出错,但是在链接时出现错误,原因是该静态变量没有初始化。
class Obj {
public:
//...
private:
static vector<string> vstr;
};
vector<string> Obj::vstr;
这样在别的地方就可以使用该静态变量了,具体使用方法很简单,只要Obj::vstr 即可。
2. 一个类中声明了一个指针后,要记得初始化时将此指针赋为空值,在使用时先判断此指针是否为空,否则在使用一个未定义的指针时,会有错误出现;另外在重置指针时,不仅要回收new对象,而且最好将指针赋为NULL;
3. 在一个类中malloc或者new出来的空间,只需在此类的析构函数中进行回收,另外,将所使用的容器(vector, list等)清空即可。
4. 使用对象的get方法返回的数据,最好能使用引用返回。下附函数返回说明:
1)主函数main的返回值:这里提及一点,返回0表示程序运行成功。
2)返回非引用类型:函数的返回值用于初始化在跳用函数出创建的临时对象。用函数返回值初始化临时对象与用实参初始化形参的方法是一样 的。如果返回类型不是引用,在调用函数的地方会将函数返回值复制给临时对象。且其返回值既可以是局部对象,也可以是求解表达式的结果。
3)返回引用:当函数返回引用类型时,没有复制返回值。相反,返回的是对象本身。
int &func(int& a)
{
return a;
}
int main(int argc , char* args[])
{
int a=0;
int b=func(a);
printf("&a=0X%08X,&b=%08X\n",&a,&b);
}
运行结果:
&a=0X0012FF7C,&b=0012FF78
这里可以看到,返回变量的地址和传入地址是不同的。变量b是main函数中自己的栈中生成的。
int& c=func(a)
那么c就是指向a,
a变化那么c也跟着变化,
在上面b的情况,
是重新分配了一个空间,
因此不会同步变化。