输入/输出和类

时间:2018-04-25 20:16:34

标签: c++ coding-style standards

我最近在C ++上观看了几个视频。在视频中,该人说通常你不想在一个类中使用输入/输出。有人可以详细说明原因吗?是这个人说的还是编程中的某种标准?相反,他正在使用

  

投掷

而不是cout / print / printf。

基本上视频说你不应该在课堂上使用输入/输出。这是行业标准吗?如果是这样的话?

1 个答案:

答案 0 :(得分:0)

为可重用性而设计的类不应该对它们的使用位置做太多假设。想象一下,您创建了一个C ++类来封装文件的概念,例如:

class CFile {
public:
    CFile(const char* path);
    void rename(const char* new_path);
    std::vector<char> get_content();
};

此课程具有高度可重用性。今天,它可以在控制台应用程序中使用,可以将信息写入stdout。明天,它可能会在GUI应用程序中使用,在这里,写入stdout并没有任何意义。 rename()方法在错误上抛出异常比写入stdout更有意义。然后,客户端应用程序(控制台与GUI)可以选择处理他们选择的错误。

然而,实际上,您会发现大多数系统都是可重用类的混合(可以轻松地从一个应用程序中拉出并在另一个应用程序中原样使用的类)和聚焦类(类是旨在处理特定于程序的用例)。焦点类可能更好地假设其用例,在这种情况下,它应该随意写入stdout。例如,您的main()方法可能类似于以下内容:

int main(int argc, char* argv[]) {
    CMyApplication application;
    return application.run(argc, argv);
}

在这种情况下,您的所有应用程序的功能都可能在类中,并且&#34;控制器&#34;或&#34;司机&#34;对于您的所有应用程序,都是类CMyApplication。如果适合这样做,这个类可以写入stdout所需的全部内容。