如图,为什么cin>>p2 1,2,3后,cout<<p2还是(0,0,0)啊
3条回答 默认 最新
- 阿里嘎多学长 2024-04-24 09:02关注
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
图片内容
图片中显示的是一个C++程序的代码片段,该程序定义了一个名为
point
的类,该类有三个浮点数成员变量x
、y
和z
,以及一个带有默认参数的构造函数。此外,还有对输入和输出运算符的重载。代码中还包含了main
函数,其中创建了两个point
对象p1
和p2
,尝试从cin
读取p2
的值,然后输出p1
和p2
。问题概括
问题是,尽管尝试从标准输入读取
p2
对象的值(1,2,3),但当使用cout
输出p2
时,其值仍然是默认构造函数所设置的(0,0,0)。问题出现原因
问题出现的原因是,尽管类
point
中重载了输入运算符operator>>
,但是在main
函数中,并没有正确地调用这个重载的运算符来为p2
赋值。代码中cin >> p2;
这一行是错误的,因为point
类的对象不能直接通过cin
以这种方式输入。问题解决方案
为了解决这个问题,需要确保使用类中定义的重载的输入运算符来正确地为
point
对象赋值。提供代码
以下是修改后的代码,它将正确地从
cin
读取p2
的值:#include <iostream> using namespace std; class point { private: float x, y, z; public: // 默认构造函数 point(float a = 0, float b = 0, float c = 0) : x(a), y(b), z(c) {} // 输入运算符重载 friend istream& operator>>(istream& input, point& p) { cout << "x="; input >> p.x; cout << "y="; input >> p.y; cout << "z="; input >> p.z; return input; } // 输出运算符重载 friend ostream& operator<<(ostream& output, const point& p) { output << "(" << p.x << ", " << p.y << ", " << p.z << ")"; return output; } }; int main() { point p1(4, 5, 6), p2; // 正确使用重载的输入运算符 cin >> p2; // 输出p1和p2 cout << p1 << endl; cout << p2 << endl; return 0; }
示例代码运行方式
运行这段代码,你需要一个支持C++的编译器。将代码复制到一个文本编辑器中,保存为
.cpp
文件,然后使用编译器编译并运行它。例如,如果你使用的是g++,你可以在命令行中使用以下命令:g++ -o point_program point_program.cpp ./point_program
示例代码预期运行结果
当你运行修改后的程序并输入
1 2 3
时,程序将输出:x=4 y=5 z=6 (4, 5, 6) x=1 y=2 z=3 (1, 2, 3)
这表明
p2
已经被正确地赋值为(1,2,3)。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥30 模拟电路 logisim
- ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
- ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
- ¥15 安装quartus II18.1时弹出此error,怎么解决?
- ¥15 keil官网下载psn序列号在哪
- ¥15 想用adb命令做一个通话软件,播放录音
- ¥30 Pytorch深度学习服务器跑不通问题解决?
- ¥15 部分客户订单定位有误的问题
- ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
- ¥15 Bug traq 数据包 大概什么价