首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将类代码分离到头文件和cpp文件中

将类代码分离到头文件和cpp文件中
EN

Stack Overflow用户
提问于 2012-03-06 16:05:56
回答 8查看 351.5K关注 0票数 201

我搞不懂如何将一个简单类的实现和声明代码分离到一个新的头文件和cpp文件中。例如,我如何分隔以下类的代码?

代码语言:javascript
复制
class A2DD
{
  private:
  int gx;
  int gy;

  public:
  A2DD(int x,int y)
  {
    gx = x;
    gy = y;
  }

  int getSum()
  {
    return gx + gy;
  }
};
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-03-06 16:09:56

类声明放入头文件中。添加#ifndef include guards是很重要的。大多数编译器现在也支持#pragma once。另外,我省略了私有,默认情况下,C++类成员是私有的。

代码语言:javascript
复制
// A2DD.h
#ifndef A2DD_H
#define A2DD_H

class A2DD
{
  int gx;
  int gy;

public:
  A2DD(int x,int y);
  int getSum();

};

#endif

实现放在CPP文件中:

代码语言:javascript
复制
// A2DD.cpp
#include "A2DD.h"

A2DD::A2DD(int x,int y)
{
  gx = x;
  gy = y;
}

int A2DD::getSum()
{
  return gx + gy;
}
票数 279
EN

Stack Overflow用户

发布于 2012-03-06 16:12:07

通常,您的.h包含类定义,即所有数据和所有方法声明。在您的案例中如下所示:

代码语言:javascript
复制
A2DD.h:

class A2DD
{
  private:
  int gx;
  int gy;

  public:
  A2DD(int x,int y);    
  int getSum();
};

然后,您的.cpp包含如下方法的实现:

代码语言:javascript
复制
A2DD.cpp:

A2DD::A2DD(int x,int y)
{
  gx = x;
  gy = y;
}

int A2DD::getSum()
{
  return gx + gy;
}
票数 22
EN

Stack Overflow用户

发布于 2018-07-07 13:11:59

在以更广泛的方式研究这个问题时,有必要向偶然发现这个问题的读者指出,如果您只想将项目拆分成文件,则不需要使用接受答案的步骤。只有当您需要单个类的多个实现时才需要它。如果每个类的实现是一个,那么每个类只有一个头文件就足够了。

因此,从接受答案的示例中,只需要这一部分:

代码语言:javascript
复制
#ifndef MYHEADER_H
#define MYHEADER_H

//Class goes here, full declaration AND implementation

#endif

#ifndef等预处理器定义允许多次使用它。

PS。一旦你意识到C/C++是“愚蠢的”,而#include只是一种“在这里转储这个文本”的方式,这个主题就会变得更加清晰。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9579930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档