我是否需要将所有内容都放在C ++中?

时间:2016-07-30 09:23:01

标签: c++ function class

我被告知C ++中的所有东西(即使它没有被实例化,但是在多个地方使用)必须放在一个类中。虽然我知道我没有必要,但我不知道哪个更糟糕:制作一堆不会被实例化的类,或者在main.cpp中有一堆函数。

如果我遵循我的说法,这里有一些示例代码:

#include <iostream>
using namespace std;

int main(){
// line of code to call class that acts as a calculator
}

4 个答案:

答案 0 :(得分:3)

不,你不应该把所有东西都放到课堂上。谁告诉你这是错的。

C ++不仅仅是一种OO语言,它是一种多范式语言。此外,将所有内容放入类中并不意味着代码是面向对象的(特别是对于静态方法,您不需要实际对象,只需要类型)。

如果检查C ++标准库,您将看到它包含许多不属于任何类的函数(例如,检查<algorithm><numeric>库的内容)。

在很多方面,non-member functions can improve your code

如果您需要在逻辑上分离功能以避免将所有内容都放在全局范围内,您可以并且应该使用namespaces。例如。之前提到的算法都放在std命名空间中。

答案 1 :(得分:1)

在任何私人努力中都没有“要求”,因此没有“需要”。你不需要别人的许可就可以编写很多函数和很少的方法。

在学校作业中,尤其是在学习C ++和软件工程时, 可能是教师要求使用类(通常是为了简化TA的工作负荷而提供)。所以是的,在这种情况下,有一个“需要”。

您在软件开发方面的工作可能包括遵守编码标准,与同行合作以及跟随您的团队领导(即使您不同意或厌恶他的领导地位)。这也暗示了使用类的要求(有时候确定了目标),因此,你应该考虑到“需要”使用类。

无论如何,作为一个初学者,我认为你应该寻求我们的许可来避免C ++课程,而是勇敢地使用它们,尽可能多地练习,然后写当你没有弄清楚你的编码尝试失败的原因或原因时,请到这个论坛。

此外,一般而言,存在软件工程目标,所有程序员都应该能够捍卫他们对同事或同事的选择。

我重视的一个例子来自Richard Fairley的“软件工程概念”

“软件设计的一个基本目标是构建软件产品,以便最大限度地减少模块之间互连的数量和复杂性。实现这一目标的一套有吸引力的启发式方法涉及耦合和内聚的概念。”

换句话说,他正在描述两个想法,这些想法结合起来可能会使您的代码更易于阅读,调试更简单,并且您的老师,同学,同事和同事更容易接受。 (两个术语都在维基百科中。)

Fairley上市

  • 7个耦合水平,来自最强耦合(最不理想)                   最弱的耦合(最理想的),

  • 8个内聚水平,从最弱(最不理想)到最强(最理想)。

如果您接受(就像我一样)Fairley的“基本目标”对您来说很重要,那么也许它们会影响您的“课堂上的每件事”。

我发现C ++类是实现Fairley列表“最理想”目标的一种优秀方法。我建议你接受这些想法,包括封装,数据隐藏,甚至多态。并用C ++类来实践这些问题。< / p>

此外,我更喜欢多个小型课程,以减少大型课程。并且不超过3个继承级别(7个非常无聊)。

也许我需要开始我的列表,并搜索其他的“我在编写C ++类时遵循的简单规则”列表。

代码示例 - 我的大部分实验看起来非常像以下内容:

int main(int argc, char* argv[] )
{
   T_t  myClass;   // instantiate a class T_t
   int retVal = myClass.exec(argc, argv);  // go
   return(retVal);
}

答案 2 :(得分:0)

没有必要把所有东西放在课堂上。你可以在写c时编写代码,即没有类结构。它在c ++中运行良好

答案 3 :(得分:0)

可以编写C ++代码,着眼于面向对象。然而,并非一切都需要进入课堂。实际上,main不在类中(就像在Java中一样)。您也可以编写未附加到类的函数。通常,在编写更多类和函数时,代码可以变得更加模块化,但是根据您的需要,这会使您的代码变得比您需要的更复杂。那里有一个微妙的平衡。也许有了更多信息,我们可以提供更多建议。

当你说,哪个更糟,你的意思是什么?计算效率,代码维护还是其他什么?您可以随时将函数原型放在.h中并在.cpp中实现,即使它们没有附加到类来帮助您的驱动程序.cpp变得过度拥挤。