【发布时间】:2014-03-30 14:20:40
【问题描述】:
这是我的 makeAccount.cpp:
#include "account.h"
#include <string>
using namespace std;
int makeAccount::getAccountNumber()
{
return accountNumber;
}
double makeAccount::getAccountSaldo()
{
return accountSaldo;
}
string makeAccount::getName()
{
return name;
}
makeAccount::makeAccount(std::string naam, int id, double saldo)
{
naam = name;
id = accountNumber;
saldo = accountSaldo;
}
这是我的 makeAccount.h
#include <string>
#include <sstream>
class makeAccount
{
public:
makeAccount(std::string naam, int id, double saldo);
int getAccountNumber();
double getAccountSaldo();
std::string getName();
private:
int accountNumber;
double accountSaldo;
std::string name;
};
这是我的 main.cpp
#include "account.h"
#include <iostream>
using namespace std;
int main()
{
makeAccount::makeAccount test("test", 30, 23.5);
cout << test.getName() << endl;
cout << test.getAccountNumber() << endl;
cout << test.getAccountSaldo() << endl;
return 0;
}
现在我遇到以下问题,当我尝试执行此代码时,我得到了这个: 1606416736 6.95322e-310 我认为在我声明构造函数的 account.h 中存在问题,但我无法弄清楚究竟是什么问题。但是,当我做这样的事情时:
private:
int accountNumber = 1234;
double accountSaldo = 1;
std::string name = "test";
};
它确实有效,所以我认为我的构造函数或 makeAccount.cpp 中有此代码的地方有问题:
makeAccount::makeAccount(std::string naam, int id, double saldo)
{
naam = name;
id = accountNumber;
saldo = accountSaldo;
}
提前致谢。
【问题讨论】:
-
除了其他人在回答中所说的之外,您在此处显示的成员函数都应该是
const,因为它们不会修改任何内容。并且字符串通常应该作为std::string const&传递,至少在 C++11 之前的版本中是这样。最后,makeAccount是一个奇怪的类名。 C++ 没有正式的命名约定,但我从未见过有人这样写类名。最常见的约定是“MakeAccount”或“make_account”。
标签: c++ class constructor