2

我很难过,我现在正在学习 C++ 课程,这是我遇到的问题,我必须声明和定义构造函数,我不知道我在做什么错我尝试但无法得到结果请帮助

 #include <iostream>
 using namespace std;

 class exercise
 {
 public:
      //declaration: constructor of class exercise
      int public_var;
      int get_private_var();
 private:
      int private_var;
  };

 //definition: constructor of class exercise
 int exercise::get_private_var()
 {
      return private_var;
 }

 int main()
 {
      exercise object(2,3);
      int pub_var = object.public_var;
      int pri_var = object.get_private_var();
      cout << pub_var <<' '<<pri_var<<endl;
      return 0;
 }
4

4 回答 4

3

示例构造函数将是:

class exercise
{
public:
  exercise(int,int);
  int public_var;
  int get_private_var();
private:
  int private_var;
};

//Constructor definition
exercise::exercise(int a, int b)
{
  public_var = a;
  private_var = b
}
//rest of member functions
于 2013-03-11T14:16:56.747 回答
0

这是使用构造函数构建类的方法

class a
{
public:
int pubvar;
a() //default constructor
{
pubvar =1;
privar =2;
}
a(int one, int two) //constructor with intializing
{
pubvar = one;
privar = two;
}
private:
int privar;
}

现在默认初始化是

a myclass;

并用你的变量初始化是

a myclass(4,2);

希望有帮助

于 2013-03-11T14:21:48.633 回答
0

为了声明一个构造函数,你应该

class exercise
 {  
   public:
     //declaration: constructor of class exercise
     exercise();
     int public_var;
     int get_private_var();
   private:
     int private_var;

};

为了实现(通常在 .cpp 文件中),您应该:

exercise::exercise()
{  
   //your code here
}

祝你好运

于 2013-03-11T14:17:23.643 回答
0

get_private_var不是构造函数。当你这样做时调用它的函数object.get_private_var()- 它只是一个典型的成员函数。

构造函数是在您构造对象时被调用的函数(有意义,对吗?)。在您的情况下,它将在您执行以下操作时使用:

exercise object(2,3);

这一行构造了一个对象,该exercise对象被调用object并将值传递给它的构造函数。看起来您想将这些值分配给and成员。23public_varprivate_var

首先你需要声明你的构造函数:

class exercise
{
 public:
  exercise(int, int); //declaration: constructor of class exercise

  int public_var;
  int get_private_var();
 private:
  int private_var;
};

如您所见,构造函数的声明与任何其他成员函数一样,只是它没有返回类型。这是有道理的,因为返回类型显然是类本身。在这里,我指定了两个参数。

现在我们需要定义构造函数,类似于您定义的方式get_private_var,但同样没有返回类型:

exercise::exercise(int x, int y)
{
  public_var = x;
  private_var = y;
}

然后你就完成了。此构造函数只是将传递给它的值分配给公共和私有成员。

但是,有一种更好的方法来实现这个构造函数,使用成员初始化列表:

exercise::exercise(int x, int y)
  : public_var(x), private_var(y)
{ }
于 2013-03-11T14:18:42.823 回答