我是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;
}
问题是构造函数的定义。我不知道出了什么问题......
答案 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)
{
}