为了账号安全,请及时绑定邮箱和手机立即绑定

为什么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();

}


正在回答

1 回答

sum在类中的定义static int sum应该把static去掉,static是静态存储关键字,加了static,sum相当于成为了一个全局变量,没有把类实例化之前,就已经分配好内存给sum了,而每一个的实例对sum进行操作,都是对同一个变量进行操作,所以sum是两个实例的x,y,z相加的和,刚好是54。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之多态篇
  • 参与学习       66209    人
  • 解答问题       334    个

本教程将带领大家体会面向对象三大特性中的多态特性

进入课程

为什么M.GetSum();是54

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号