為什么M.GetSum();是54
#include <iostream>
using namespace std;
class Myclass
{
public:
Myclass(){}
Myclass( int a, int b, int c);
void GetNumber();
void GetSum();
private:
int x,y,z;
static int sum;
};
int Myclass::sum=0;
Myclass::Myclass(int a, int b, int c)
{
x=a; y=b; z=c;
sum+=x+y+z;
}
void Myclass::GetNumber()
{
cout<<"number="<<x<<","<<y<<","<<z<<endl;
}
void Myclass::GetSum()
{
cout<<"sum="<<sum<<endl;
}
int main()
{
Myclass M(3,7,10);
M.GetNumber();
M.GetSum();
Myclass N(14,9,11);
N.GetNumber();
N.GetSum();
M.GetSum();
}
2016-04-18
sum在類中的定義static int sum應(yīng)該把static去掉,static是靜態(tài)存儲(chǔ)關(guān)鍵字,加了static,sum相當(dāng)于成為了一個(gè)全局變量,沒(méi)有把類實(shí)例化之前,就已經(jīng)分配好內(nèi)存給sum了,而每一個(gè)的實(shí)例對(duì)sum進(jìn)行操作,都是對(duì)同一個(gè)變量進(jìn)行操作,所以sum是兩個(gè)實(shí)例的x,y,z相加的和,剛好是54。