一切都在课堂上吗?

时间:2011-06-04 21:25:03

标签: c++ oop

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

一个随机的问题:何时将2个类放在一个标题中是否合适?或者重要吗?

6 个答案:

答案 0 :(得分:10)

  

一切都在课堂上吗?

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

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

现在,所有其他算法内容都是免费功能,只要它可以在多个类上运行,并且不需要直接访问该类的内部。以std::sort为例。它适用于任何迭代器对,只要它们是随机访问迭代器即可。在STL中,那将是vectordeque,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 }
}

写一次,随处使用。

作为最后一点,this article by Scott Meyers是关于类设计的非常有趣的读物以及何时使用自由函数,何时不是。

答案 1 :(得分:2)

在C ++中,没有必要将所有内容封装在一个类中。 C ++是一种多范式编程语言,这意味着您既可以采用面向对象的方法,也可以采用程序化(无类),或者采用一些混合方式。

一般来说,封装是一件好事,可以提高代码的可读性和可维护性。

答案 2 :(得分:2)

在C ++中,一切都不需要进入一个类(而不是Java,一切都在一个类中)。

  1. 当你想要代表某个真实世界的实体时,你应该创建一个类,例如一个人,一个顾客,一个用户,一个动物,一个汽车等。你需要存储一些关于实体的数据并且有一些相关的功能到实体。

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

  2. 选择在何处使用类以及何处不是严重的设计问题。没有一般规则。在开始申请之前,您需要坐下来用纸和笔,并集体讨论您需要的基本课程。您可以随时添加和微调您的设计。在设计课程时,要记住的最重要的事情是代码重用性。还要尽量保持代码松散耦合。

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

答案 3 :(得分:1)

非常一般,如果某个东西可以称为对象,它可以是一个类。一个类应该只对应一个“真实”对象。不超过一个对象,通常不是对象的一部分 示例 - 人员,画笔,书籍,库,应用程序,进程,线程,Internet连接,GUI按钮,GUI窗口。

一个标题中的两个类的选项取决于您正在使用的编码标准,或者为您编写代码时强制执行的编码标准。有些人没有。通常,当两个类非常小并且高度相关时,例如,从相同的基类或接口继承,这是合适的。

请考虑阅读适当的面向对象和C ++书籍。

答案 4 :(得分:0)

Classes是名为“Object Oriented Programming”的编程范例的一部分。

Personclass

class Person {
public:
    int age;
}

现在我们制作一些“对象”:

Person Alice;
Person Bob;
Person Charlie;

现在观看:

Alice.age = 5;
std::cout << "Alice's age: " << Alice.age << "\n";

Bob.age = 10 * Alice.age;
std::cout << "Bob's age: " << Bob.age << "\n";

输出:

Alice's age: 5
Bob's age: 50

如您所见,class es(或struct s)可用于将事物分组在一起 - 这样您就可以创建“anology”。

答案 5 :(得分:0)

一个类基本上是一个对象的表示 该类将保存有关该对象的信息,并且通常包含更改该数据的方法。

C ++中不在类中的所有内容都称为static代码,这意味着该方法不需要调用上下文。

类中的方法(类中的方法也可以是静态的,但现在让我们忘掉它)需要一个对象来调用它们。

如果您在班级foo(int, int)中有静态方法bar(int, int)和班级方法Example

像这样调用boo: foo(3, 4);

虽然bar会像这样调用:

Example obj;
obj.bar(3, 4);

面向对象编程(带有类)有几个优点,目前大多数常用语言都是OOP。