C++中的C类程序?

8 c c++ oop

C++ 正确的编程风格是否要求使用类或C类似程序编写所有代码?如果我要向其他人提供一些代码,它会被接受,C++因为它有std::vectorstd::string(而不是char *)内部,或者一切都必须是一个类?

例如:

int number = 204;
std::string result = my_procedure(number);

OR

MyClass machine;
std::string result = machine.get(number);
Run Code Online (Sandbox Code Playgroud)

是否存在程序员,将要或者被允许C在他的某些源代码中具有类似程序的情况?你有没有做过那样的事情?

在这个问题的上下文中C,C++存在和存在之间的边界(如果有的话)?

我希望我的问题清楚,并符合规则.

Jon*_*Jon 10

在代码中拥有自由函数当然是可以的 - 这是建筑问题,而不是"++ ness".对于小型程序而言,使用类全部内容甚至没有意义,因为OO实际上是管理复杂性的工具.如果没有开始的复杂性,为什么要打扰?

你的第二个问题,在哪里画线,没有简短的答案.显而易见的是,在C标准与C++标准不同的所有地方绘制线.但是,如果您正在寻找C++具有的高级语言功能列表而C不具备,则以下是其中一些:

  • 班级类型和OO(当然)
  • STL
  • 函数/运算符重载
  • 参考
  • 模板
  • new/ delete管理记忆


Ton*_*roy 8

C++是一种多范式语言,其中OO,程序,泛型/生成以及 - 较小(但随着C++ 0x增加)范围的功能 - 都属于范例.您应该使用最适合问题的方法:您希望代码易于获取并保持正确,并且难以填充.

类的实用程序在于打包数据(状态)以及相关的功能.如果你的wordify函数不需要在调用之间保留任何状态,那么就不需要使用类/对象.也就是说,如果你可以预测你很快就会想要拥有状态,那么从一个类开始可能是有用的,这样客户端代码就不需要改变了.

例如,假设向函数添加一个参数以指定输出是"第一","第二"而不是"一","两".您希望将行为设置一次并记住,但在应用程序的其他位置,某些其他代码也可能使用该功能,但更喜欢其他设置.最好使用一个对象来保存状态并对其进行排列,以便每个对象的生命周期和可访问性与将使用它的代码保持一致.

编辑:

在这个问题的上下文中,C和C++之间的边界在哪里(如果有的话)?

C++只是为您提供了更丰富的方法来解决您的编程任务,每个方法都有其必要的优缺点.很多时候,最好的方法仍然与在C中完成的方式相同.对于C++程序员来说,选择更糟糕的方式仅仅因为它只能用于C++是不合理的.尽管如此,这样的选择存在于无数级别,所以通常会说一个非[class-]成员函数接受一个const std::string&参数,将过程函数调用与由a生成的面向对象数据相结合template:它们一起工作得很好.