[C ++]构造函数不检测组件

时间:2017-01-09 18:17:57

标签: c++ function constructor components

我是OOP的初学者,我对构造函数的定义有问题。 headfile.h:

#ifndef RACHUNEK_H_INCLUDED
#define RACHUNEK_H_INCLUDED

#include <string>
class Rachunek
{
   std::string surname;
   std::string nr_account;
   double balance;
public:
   Rachunek();
   Rachunek(std::string & name,std::string & nr,double s = 0.0);
   ~Rachunek(){};
   void show();
   void give(const double m);
   void get(const double m);

};

#endif // RACHUNEK_H_INCLUDED

文件.cpp:

#include <iostream>
#include <string>
#include "rachunek.h"
using namespace std;

Rachunek::Rachunek() //default
{
  surname = "not specified";
  nr_account = "0000-0000-0000-0000";
  balance = 0.0;
}
Rachunek::Rachunek(string & name, string & nr, double s = 0.0) //mysecond
{
  surname = name;
  nr_account = nr;
  balance = s;
}

问题是构造函数的定义。我不知道出了什么问题......

1 个答案:

答案 0 :(得分:2)

  

问题是构造函数的定义。我不知道出了什么问题......

不允许在函数定义中包含默认值。仅在声明中允许使用默认值。使用:

Rachunek::Rachunek(string & name, string & nr, double s) :
   surname(name),
   nr_account(nr),
   balance(s)
{
}

我建议更改其他构造函数的实现,以使用初始化列表语法初始化成员变量。

Rachunek::Rachunek() :
  surname("not specified"),
  nr_account("0000-0000-0000-0000"),
  balance(0.0)
{
}

如果能够使用C ++ 11编译器,可以使用委托构造函数进一步简化。

Rachunek::Rachunek() : Rachunek("not specified", "0000-0000-0000-0000", 0.0)
{
}