English 中文(简体)
在创建新的C++级时,为什么会建立两个档案(h和cpp)。
原标题:Why are there two files created (.h and .cpp) when creating a new C++ class?

大约14年前,我安排了一套C++。 我熟悉诸如我主要与这些技术合作的新技术。

现在,我撰写一份模拟电话清单“Windows Application”,我想使之成为C++,以便我能更好地看到C#和C++的差异。

我要说的是,我已经注意到了一种差别! Hehehe... 因此,其中一个差异是,在从视觉演播室模板中创建新的C++级时,它不仅生成了电压板级文档,而且还创建了一个头版文档。

为什么如此? 为什么要为一类人设立1.h级和1.cpp级档案?

我记得,如果我们可以说,主人档案可能是功能和物体的图书馆,以便今后再使用,我是否正确地记住?

<<>问题>

  1. Why are there two files (.h and .cpp) created when adding a new C++ class?
  2. Should I define the members in the header file and define the functions core in the cpp file?
  3. If no to 2, what is the header file for in this particular scenario?

<EDIT #1

那么,我的法典就应当如此看待吗?

// Customer.h header file
ref class Customer {
    private:
        char* _number, _name;
        long _phoneNumber;

    public:
        char[] get_number();
        void set_number(char* number);
        char[] get_name();
        void set_name(char* name);
        long get_phoneNumber();
        void set_phoneNumber(long phoneNumber);
        void set_name(char* name);
}

然后:

// Customer.cpp
#include <Customer.h>

char[] Customer::get_number() {
    return _number;
}

void Customer::set_number(char* number) {
    if (number != null && sizeof(number) < 1) return;
    _number = number;
}

// And the other members here...

现在,我知道,我的法典中有许多错误。 如果你帮助我纠正这些障碍,以便我能够提高我的C++技能,我感到欣慰。

感谢帮助我将其编外。

最佳回答

必须在C++使用之前宣布功能和类别,这只是一份声明,指出这些功能可以从这一档案中使用。 这些申报采用头版档案(.hpp/.h文档)。

为了宣布一项职能,请说明:

<><><><>>>>><>><>>><>>>>>>><>>>>>>> ><<>> ><>>>>>>>>><<>>><>>>>>>>><>>><>>>>>>><>>>>>>><>>>>><>>>>>>> >>>>>>>><>>>>>>>>>>><<>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>>><>>>>><>>>>>>> > >>>>>>>>>>>>>>>>> > ><>>>> >><>>>>>>>><>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>><>>>>>>

因此,这项职能:

int factorial (int x)
{
  if (x == 0)
    return 1;
  return x * factorial (x - 1);
}

早就宣布:

int factorial (int x);

申报班也一样:

www.un.org/Depts/DGACM/index_spanish.htm 希望:


foo.hpp:

#ifndef FOO_HPP_
#define FOO_HPP_

class Foo
{
public:
  int baz;

  void bar ();
};

#endif

#include "foo.hpp"
#include <iostream>

void Foo::bar ()
{
  std::cout << baz << std::endl;
}
问题回答

班级被宣布为头盔,大部分功能在申请档案中界定。 该工具正在帮助你实现这一连接与执行之间的分离。

如何考虑负责人与申请档案之间的分离:

  • Headers contain declarations to be used by other files.
  • .cpp files contain implementation.

原因是,你想要大量档案能够利用功能,但你只想在某个地方实际确定这一功能。

标题档案宣布/确定一个类别。 报告载有成员的职能、成员数据、朋友等。 典型的情况是,它不包括执行中的大部分(如果有的话)内容(小数是例外)。

执行档案(*.cpp)只是:它们执行这一类。

你们不必使用执行档案(如果你告诉万国邮局,你会担心你想要建立一门在线班级,它只会创建主人档案),但通常只用于模版班(例如STL班和提升图书馆的许多班级)或非常简单的班级。

C++汇编需要标题档案,因为它与C#几乎没有不同。

在C#中,双向模块之间的联系总是动态的。 在C++中,固定联系和动态联系之间存在差异。 详细情况,我需要一整小时的写作时间,但我要说,这是最短的。

在C++中,每份申请档案都分别汇编成一份标书。 该档案需要与其他档案联系起来,以便形成双向档案。 头号档案中包含的所有method signature,这是援引该类确定方法的档案。

在C#中,所有档案都编入单一双亲档案。 汇编者总是知道你正在编纂的某一成员所看到的哪类和办法。





相关问题
building .net applications without Visual Studio

I m interested to hear about people working with building .net applications using MSBuild, NAnt or similar tools. What are you using, why are you using it instead of the VS IDE? I like to use ...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Visual Studio 2010 Beta 2: Can I print in color?

I have to turn in a hard copy of some code with an assignment. Is there any way in Visual Studio 2010 to print C# source code with syntax highlighting? PS: The assignment is solving a math problem, ...

Set Select command in code

On button Click I want to Set the Select command of a Gridview. I do this and then databind the grid but it doesn t work. What am i doing wrong? protected void bttnView_Click(object sender, ...

WPF design-time context menu

I am trying to create a custom wpf control, I m wondering how I can add some design-time features. I ve googled and can t seem to get to my goal. So here s my simple question, how can I add an entry ...

热门标签