一切都在课堂上吗?

Chr*_*ian 10 c++ oop

我还有另一个基本问题.我有点回想起C++中的所有内容都在课堂内.然后我听说不应该在可能的情况下使用课程.所以我的问题是:你什么时候上课,什么时候不上课?(一两个例子很酷)

还有一个随机的问题:什么时候在一个标题中放两个类?或者重要吗?

Xeo*_*Xeo 10

一切都在课堂上吗?

不,绝对不是.类是面向对象编程的一部分,但C++不仅仅是Java,而是Java或C#.

C++是一种多范式语言,这意味着它还允许其他东西.这是因为使用OOP时最大的缺点是算法的可重用性.
当然,你可以为那里的每个班级编写某些功能,但是只写一次并永远完成它会有多酷?这就是STL的基础.STL中的类vector只具有绝对需要封装的成员函数.它们中的大多数都是独一无二的,比如你从a vector中检索第一个元素与检索a的第一个元素是不同的list.所有被封装,并通过成员函数抽象出来像frontback(用于直接访问成员),或beginend(对于迭代器的访问).

现在,所有其他算法的东西都是自由函数,只要它可以在多个类上运行,并且不需要直接访问该类的内部.以std::sort作为一个例子.它适用于任何迭代器对,只要它们是随机访问迭代器即可.在STL中,那将是,vector并且deque,我们得到C++ 0x array,但是在STL之外,如果它们提供这样的迭代器,那么你的类也是如此.或者更突出的是,C风格阵列!是的,您可以非常轻松地使用它们进行排序:

#include <algorithm>
#include <iostream>

int main(){
  int arr[5] = { 5, 2, 4, 1, 3 };
  std::sort(&arr[0], &arr[0] + 5);
  // arr == { 1, 2, 3, 4, 5 }
}
Run Code Online (Sandbox Code Playgroud)

写一次,到处使用.

最后一点,Scott Meyers撰写的这篇文章是关于类设计以及何时使用自由函数的非常有趣的读物.


小智 2

在 C++ 中,所有内容都不需要放在类中(与 Java 不同,Java 中所有内容都放在类中)。

  1. 当您想要表示一些现实世界的实体(例如人、客户、用户、动物、汽车等)时,您应该创建一个类。您需要存储一些有关该实体的数据并具有一些与该实体相关的功能。

    例如:客户。您创建一个客户类别。客户需要存储以下数据。{姓名、年龄、地址、电话}。您需要一些函数,例如 addCustomer()、sendMessage() 等。

  2. 选择在哪里使用类和在哪里不使用类是一个严重的设计问题。没有一般规则。在开始申请之前,您需要坐下来用纸和笔集思广益,讨论您将需要的基础课程。您将来可以随时添加和微调您的设计。在设计类时,要记住的最重要的事情是代码的可重用性。还要尝试使代码尽可能松散耦合。

  3. 作为一种标准做法,每个头文件应该有一个类。