c++类的静态成员

类的静态成员必须初始化:否则出现
无法解析的外部符号 "private: static double SavingAccount::annualInterestRate" (?annualInterestRate@SavingAccount@@0NA)

why??
猜想链接器无法找到这个符号
c++对类的加载,没有在内存中分配空间,所以导致无法找到符号链接

正确解答:
static成员不属于对象的一部分,而是类的一部分,所以程序可以在没有生成对象的时候就处理这个成员变量,但必须首先初始化它。

不要把static成员变量的初始化安排在构造函数中,因为构造函数会被多次调用,而变量的初始化只有一次。
也不应该在头文件中,因为可能会被载入到很多地方,也存在多次执行的问题。
应该在应用程序文件中,类以外的其他任何位置设定其初值。

不用考虑是否为私有成员,因为设置初值不受权限束缚,并不是赋值操作!
事实上的情况是:static在这个时候才被定义出来! 这个操作十分重要,没有定义会产生连接错误!!!!


为什么sitatic函数无法处理non-static成员?
成员函数只所以能够以单一一份函数代码处理各个对象数据是因为:隐藏的this指针!
staic函数并没有this指针所以,无法完成这个操作!!!

你可能感兴趣的:(C++)