如何显示class的值?

How to display the values of a class?

我几乎是 c++ 的新手。我创建了一个 class 的学生。首先,当我返回标记的媒体时,它不是浮点值。例如:如果我输入 5 和 10,它会 returns 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 工作,请注意它没有 return 任何东西,因此您只需像这样调用它:

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.0替换2来实现浮点除法

float media = (mark1 + mark2)/2.0; 

并且由于您的 disp 函数未返回您不需要 cout 的内容。你可以这样做,

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