【发布时间】:2017-05-11 22:52:10
【问题描述】:
所以基本上我只是在我的一个类方法(函数)中使用 cout/cin 用简单的代码编写了我的程序。我知道这很糟糕,不应该这样做,我应该用什么切换它们?
例如,现在我有 Human 类。它有一些字段(变量),例如性别、身高、年龄。
我有一个叫getInfo()的方法,基本上很多
cout << "Whats your age?" << endl;
cin >> age;
等等。我应该把它们改成什么?我应该使用类似的东西
ostream& operator<<(ostream &o, const Human &s)
istream& operator>>(istream &i, Human &s)
我已经把这些函数写下来了,但它们基本上只适用于 toString 吗?
我应该使用 toString 做什么? (需要 toString - 我的项目的任务)。
【问题讨论】:
-
重载的操作符会像 getInfo() 和 toString 方法一样?为什么你不能只询问方法和 cin/cout 的信息?
-
嗯,toString() 方法一般用于格式化和显示字符串中的输出。您可以在其中使用重载运算符“>”。
-
答案取决于您真正需要(或被要求)做什么......我会首先“解耦”包含数据的类(人类)以及您从中获取数据的方式用户并将其分配给 Human 对象。 toString() 方法可能只是将人类信息(年龄,姓名,...)格式化为一个 std::string,可以输出到 Human 类之外的某个地方(请注意,在我看来,这真的是丑陋的 C++,它更好提供运营商
-
我个人会要求在 main 函数中输入信息并使用 setName 等将其分配给对象,但是我有另一个名为 MealPlanner 的类,其中一个任务是与另一个类一起使用组合。所以我在 Meal Planner 中创建了 Human 对象,但在 main 中实际上无法获取任何信息。