回 帖 发 新 帖 刷新版面

主题:关于类的静态变量的问题

1   class SavingAccount
2   {
3    private:
4      char m_name[40]; // 存户姓名
5      char m_addr[60]; // 存户地址
6      double m_total; // 存款额
7      static double m_rate; // 利率
8       ...
9    public:
10    static void setRate(double newRate) { m_rate = newRate; }
11    ...
12     };
13    double SavingAccount::m_rate = 0.0075; // 设置 static 成员变量的初值
14     void main()
15     {
16        SavingAccount::setRate(0.0074); // 直接调用类別的 static 成员函数
17        SavingAccount myAccount;
18        myAccount.setRate(0.0074); // 通过对象调用 stati c 成员函数
19     }

我在看深入浅出MFC时前面讲了
// 第一种存取方式
void main()
{
SavingAccount::m_rate = 0.0075; // 欲此行成立,须把m_rate 改为public
}
// 第二种存取方式
void main()
{
SavingAccount myAccount;
myAccount.m_rate = 0.0075; // 欲此行成立,须把m_rate 改为public
}
但此处第13句不大理解,不是说私有的变量(包括静态的私有变量)是不能再其他位置赋值的吗?

回复列表 (共3个回复)

沙发

根据我的理解

static  的定义已经表明该变量不仅仅是一个声明的问题,类定义的同时已经分配了存储空间,可以进行操作。
就像函数中,用static 定义后,可以不断进行的累加一样。

个人见解!

板凳

谢谢楼上的兄弟,不过你的答案不是很正确;我已经查到正确的答案呢答案如下:
第十三句是一个静态变量的初始化,不是一个普通的赋值语句。至于为什么要这样初始化,这个是C++的规定,请注意double SavingAccount::m_rate = 0.0075;这个语句前面加上了变量类型,这个是不能少的。在此还是要感谢大家的帮忙!

3 楼

好人哪,呵呵,学习了

我来回复

您尚未登录,请登录后再回复。点此登录或注册