帮助我理解C++;头文件和类 >,所以我尝试从中间Delphi过渡到C++面向对象编程。我读过Ivar Horton的Visual C++ 2010的书。我可以顺利完成简单的控制台应用程序。我懂语言本身(有点)。我所挣扎的是标题和类

帮助我理解C++;头文件和类 >,所以我尝试从中间Delphi过渡到C++面向对象编程。我读过Ivar Horton的Visual C++ 2010的书。我可以顺利完成简单的控制台应用程序。我懂语言本身(有点)。我所挣扎的是标题和类,c++,C++,我还了解头文件和类通常做什么。我没有得到的是何时使用头或类的实现?我需要为我所做的一切创建类吗?我的实际工作函数需要在头文件中还是在CPP文件中?我不知道如何正确使用这些工具,可以从更有经验的程序员那里得到一些真实的指导 如果有帮助的话,我正在尝试使用MFC转换到windows应用程序 头文件不是必需的。理论上,您可以只使用实现文件构建整个应用程序。头文件的要点是将定义与实现分开。它们是一种使链接和编译更容易/更快的方法 不,您不需要为所有内容创建类。全局函数在C++中是完全合法的。C++中的

我还了解头文件和类通常做什么。我没有得到的是何时使用头或类的实现?我需要为我所做的一切创建类吗?我的实际工作函数需要在头文件中还是在CPP文件中?我不知道如何正确使用这些工具,可以从更有经验的程序员那里得到一些真实的指导


如果有帮助的话,我正在尝试使用MFC转换到windows应用程序

头文件不是必需的。理论上,您可以只使用实现文件构建整个应用程序。头文件的要点是将定义与实现分开。它们是一种使链接和编译更容易/更快的方法


不,您不需要为所有内容创建类。全局函数在C++中是完全合法的。C++中的

< P>头就像Delphi单元中的接口;它们定义了允许其他编译单元了解的内容(通过原型和声明),以及允许关联编译单元了解其他编译单元的内容(通过外部声明)。在单个编译单元程序中并不严格要求它们,但它们可以帮助您考虑明确的职责分离

C++中的类与Delphi中的类非常相似;您可以在适合任务时使用它们。

哎哟。。 这是一个很大的话题。你问的是如何解释OOP的整个概念。 网上有很多关于它的东西。首先我要说:
-这是Java语言,但概念是一样的。 更重要的是,C++中有这个愚蠢的标题。Header是关于类所包含内容的基本信息。所以标题本身没有关键代码,只有“简介”。在编译过程中,代码取自类。我希望这有帮助

我也了解什么是头文件 通常情况下,课堂是这样的。我是什么 没有得到的是什么时候实现的 我使用标题还是类?是吗 需要为所有内容创建类 我愿意?我的实际工作职能需要什么 是在头文件中还是在CPP文件中? 我不知道这些东西的正确用途 并且可以使用一些真实世界的指导 来自更有经验的程序员

再过几年,我也会有同样的问题——我认为这不是一个涵盖得很好的问题。让我们来分析一下我认为是你问题的核心部分

是吗 需要为所有内容创建类 是吗

这是主观的,但我认为不是。你需要为你想建模的东西创建一个类,这样做是有意义的。例如,一个数据项可能比C的类型更复杂,如
int
char
。您还应该使用
字符串
类和
STL
的容器(查看向量)。简而言之,这意味着你可能会在你做的大多数事情中使用一个类,但这并不意味着你的代码的每一个小部分都必须在某个地方以某种方式归入一个类

我也了解什么是头文件 通常情况下,课堂是这样的

让我重复一下你得到的结果。正如您可能知道的,
C
,因此
C++
需要在编译单元中不在它前面的函数的原型定义(在所有头替换它们的include之后完成源代码)。因此:

#include <iostream>
using namespace std;

int testadd()
{
    int a = 4; int b = 2; int c = add(a, b);
    return c;
}

int add(int x, int y)
{
    return x + y;
}

int main(int argc, char** argv)
{
    cout << "result is: " << c << endl;
    return 0;
}
#包括
使用名称空间std;
int testadd()
{
int a=4;int b=2;int c=add(a,b);
返回c;
}
整数相加(整数x,整数y)
{
返回x+y;
}
int main(int argc,字符**argv)
{
我还了解头文件和类通常做什么

不,对不起。恐怕你没有。我可以从你在那份声明中使用的术语看出来

“header”和“class”这个词不仅不是排他性的,也不是相关的……它们甚至不在同一个级别

一个“类”是一个C++语言构造。

一个“文件头”是包含C++代码的文件系统上的文件。 我认为你所说的“类”在你所说的上下文中被正确地称为“翻译单位”,一个.cpp文件。这里的问题是类与翻译单位之间没有任何类型的1:1甚至1:many关系。类代码位可以出现在任意数量的.cpp文件中,.cpp文件可以包含任意数量的类位和其他内容

事实上,如果我们继续使用不正确的术语,并跳过一些不方便的事实,那么应该将标题称为“类”文件,因为这是类定义通常出现的地方(表示类{…};).尽管如此,我们还是要把这个世界留给另一个世界,因为你也可以完全自由地用翻译单位定义类

头和翻译单元(如果需要,也可以称为“源文件”)之间的区别在于,头中的代码不是作为头元素编译的,而是完全固定在包含它的“源文件”中。换句话说,头永远不会编译,而是预处理的

你放在头中的东西是那些你想要复制/粘贴到包含它们的任何地方的东西。类定义或声明只是其中的两个。你可能希望包含内联函数代码(你希望编译器将代码粘贴到它使用的地方,而不是跳到哪里——尽管这也不是确切的故事).Templates是其他可以放在标题中的好东西,因为它们必须完全存在于您尝试实例化它们的任何地方(因此它们必须到处复制/粘贴)

你放在“源文件”中的东西是那些你只想要其中一个的东西,