如何允许程序创建新对象

时间:2016-03-31 19:01:52

标签: c++ visual-studio c++11

非常感谢您花时间看我的问题!

现在我正在使用类和对象。我正在尝试编写一个程序,用于存储有关酒店访客的信息。用户将输入访问者的姓名和一些有关他们的信息。然后,程序将该信息存储在一个对象中,并能够计算用户停留的费用。

我遇到的

问题是我不知道如何让程序为访问者创建新对象。例如,如果Sally进来,我想在程序中为她创建一个可以存储她信息的新对象。

我已经看过动态对象创建并在这个主题上做了相当多的谷歌搜索,但似乎找不到任何答案。这是我想要做的简化版本:

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class visitor {
public:
    string name;
    int age;
};

int main()
{
//a new person comes to the hotel, the person at the desk gives the program his/her name
//and age and it is put into a class so it can be used later.
}

如果有更好的方法来实现这一点,我会喜欢建议,我只是一个初出茅庐的程序员,很可能我接近这个错误。

提前致谢!

2 个答案:

答案 0 :(得分:1)

到目前为止,你做得很好。

class visitor {
public:
   string name;
   int age;
};

int main()
{
   //a new person comes to the hotel, the person at the desk 
   //gives the program his/her name
   //and age and it is put into a class so it can be used later.
}

现在记住定义一个整数值i是多么容易,并用0:

初始化它
int i = 0;

你的课就像“int”。将名称变量命名为int。

visitor guest1;

您应该编写默认的ctor来初始化内容。请注意,您的代码具有编译器提供的默认ctor。但它的作用(没有)并不是非常有用。

然后写一个非默认的ctor来填写内容。

依此类推,等等。

显示值的show方法怎么样。

guest1.show();
祝你好运。

答案 1 :(得分:0)

您需要创建一个构造函数。这是一个构建访问者的功能。我们写如下:

class Visitor {
    public:
        string name;
        int age;
        Visitor(string name, int age) {
            this->name = name;
            this->age = age;
        }
};

然后我们可以使用以下内容创建一个新的Visitor对象(请注意其通常的约定,使类名的第一个字母为大写):

Visitor sally = Visitor("Sally", 22);

要允许用户输入我们想要的名称和年龄,您应该查看另一个SO答案,例如Getting user input in C++

编辑你没有需要来创建一个构造函数,因为在这种情况下编译器会默认创建一个构造函数,但是对于你来说,学习它会很有用。暂时创建自己的构造函数,这样你就知道发生了什么。