gpt4 book ai didi

c++ - 运算符重载 : Ostream/Istream

转载 作者:行者123 更新时间:2023-11-30 04:13:55 26 4
gpt4 key购买 nike

我在 C++ 类(class)的实验作业上遇到了一些麻烦。

基本上,我正在尝试获取“cout << w3 << endl;”工作,所以当我运行程序时,控制台显示“16”。我发现我需要使用 ostream 重载操作,但我不知道将它放在哪里或如何使用它,因为我的教授从未谈论过它。

不幸的是,我必须使用格式“cout << w3”而不是“cout << w3.num”。后者会更快更容易,我知道,但这不是我的决定,因为作业要求我以前一种方式输入。

主要.cpp:

#include <iostream>
#include "weight.h"

using namespace std;
int main( ) {

weight w1(6);
weight w2(10);
weight w3;

w3=w1+w2;
cout << w3 << endl;
}

权重.h:

#ifndef WEIGHT_H
#define WEIGHT_H

#include <iostream>

using namespace std;

class weight
{
public:
int num;
weight();
weight(int);
weight operator+(weight);

};

#endif WEIGHT_H

权重.cpp:

#include "weight.h"
#include <iostream>

weight::weight()
{

}

weight::weight(int x)
{
num = x;
}

weight weight::operator+(weight obj)
{
weight newWeight;
newWeight.num = num + obj.num;
return(newWeight);
}

TL;DR:如何通过重载 ostream 操作使 main.cpp 中的“cout << w3”行工作?

提前致谢!

最佳答案

在你的类里面创建一个好友函数

friend ostream & operator << (ostream& ,const weight&);

定义为:

ostream & operator << (ostream& os,const weight& w)
{
os<<w.num;
return os;
}

参见 here

关于c++ - 运算符重载 : Ostream/Istream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19167404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com