如何显示类的值?



我几乎是 c++ 的新手。我创建了一个学生班级。首先,当我返回标记的媒体时,它不是浮点值。例如:如果我输入 5 和 10,它返回 7 而不是 7.5。

其次,当我想使用函数 disp(( 显示名称和媒体时,它不起作用。

谁能帮上一点忙?

谢谢

#include <iostream>
using namespace std;
class student{
public:
string name;
int mark1, mark2;
float calc_media(){ 
float media = (mark1 + mark2)/2; 
return media; 
}
void disp(){
cout << "Student:" << name << endl;
cout << "media:"<< calc_media() << endl;
}
};

int main (){
student peter;
cout <<"name:" ;
cin>>peter.name;
cout <<"mark1:" ;
cin>>peter.mark1;
cout <<"mark2:" ;
cin>>peter.mark2;
cout <<"ALL:" << peter.disp();


return 0;
}

在此表达式中:

(mark1 + mark2) / 2;

您正在执行整数除法,因为变量和文本都是int类型。您可以简单地执行以下操作:

(mark1 + mark2) / 2.0;

相反,获得浮点除法。

要使disp工作,请注意它不会返回任何内容,因此您需要简单地像这样调用它:

peter.disp();

并且不将此函数的结果传递给cout

或者,您可以像这样重载operator<<,而不是disp

std::ostream& operator<<(student const &s, std::ostream &out)
{
out << "Student:" << name << endl;
out << "media:"<< calc_media() << endl;
return out;
}

然后像这样使用它:

cout << peter;

在这里,您正在执行的操作称为整数除法,变量mark1mark2都是整数,因此2,它将为您提供一个整数。

float calc_media(){ 
float media = (mark1 + mark2)/2; 

尝试将2替换为2.0以实现浮点除法。

float media = (mark1 + mark2)/2.0; 

由于您的disp函数没有返回某些内容,因此您无需cout它。你可以这样做,

cout <<"ALL:";
peter.disp();

相关内容

  • 没有找到相关文章

最新更新