在哪里以及如何定义成员变量?在标头或实现文件中?

时间:2014-03-08 15:36:23

标签: c++

我目前正在学习C ++。我在Java(我在大学学过)练习(大约2年)。

我在C ++中理解类和成员变量的概念时遇到了问题。 给出以下示例:

文件:Mems.h:

class Mems{

int n;
Mems();
};

文件Mems.cpp:

class Mems{

Mems::Mems(){
    //Do something in constructor
}
};

我不知道,如果我想让它们坚持到对象,我必须把变量放在哪里:

当我在头文件中定义它们时,我无法在cpp文件中访问它们,反之亦然。

你可以给我一个暗示吗?

2 个答案:

答案 0 :(得分:5)

您无需在.cpp文件中重新声明该类。您只需要实现其成员函数:

#include "Mems.h"
#include <iostream> // only required for the std::cout, std::endl example

Mems::Mems() : n(42)  // n initialized to 42
{
  std::cout << "Mems default constructor, n = " << n << std::endl;    
}

请注意,通常您希望默认构造函数为public。默认情况下,C ++类中的成员为private,而结构中的成员为public

class Mems
{
 public:
  Mems();
 private:
  int n;
};

答案 1 :(得分:1)

class Mems
{
public:
  int n;
  Mems();
};

在这种情况下,n是您的班级Mems的成员变量。在课堂上,您可以像这样访问它:

Mems::Mems() //you don't actually need to use the class keyword in your .cpp file; just the class name, the double colon, and the method name is enough to mark this as a class method
{
  //Do something in constructor
  n = 5; //this sets the value of n within this instance of Mems
}

Mems课程之外,您可以访问任何公共成员变量,如下所示:

Mems myMems;
int myNum;

myMems.n = 10; //this sets the value of n in this instance of the Mems class
myNum = myMems.n; //this copies the value of n from that instance of the Mems class