c++重新设置构造函数值

C++ Resetting Constructor Values

本文关键字:构造函数 设置 新设置 c++      更新时间:2023-10-16

我的程序中有一个do循环,我需要在每次循环发生时重置值(从构造函数),直到用户退出程序。我的问题是:如何使一个函数重置值(甚至,旧),因为每个时间循环发生?

我在下面给出了答案,并在页面末尾通过回答我自己的问题给出了解释。

class NNew
{
private: 
    int een, old;
public:
    NNew(int nn,int oo)
    {
        een = nn;
        old = oo;
    }
    void newer(int n)
    {
        een = n;
    }
    void Older(int o)
    {
        old = o;
    }
    void reset()
    {
        een = 0;
        old = 0;
    }
};
int main()
{
    char answer1, answer2;
    int n,o;
    NNew *object = new NNew(10,100)
    do
    {
        cout << "Would you like to continue?" << endl;
        cin >> answer1
        if (answer = 'yes')
        {
            do
            {
                (program asks user for inputs for n and o...)
            } while(answer2 !='q');
        }
        object->reset();
    } while(answer1 !='no');
    delete object;
    object = 0;
    return 0;
}

如果您希望在每次循环迭代中都有一个新的对象,您可以使用一个自动变量,让语言来处理它的构造和销毁,而不必担心手动重置它:

do
{
    NNew object(10,100);
    ...
} while (...);

或者如果它必须在堆上:

do
{
    NNew* object = new NNew(10,100);
    ...
    delete object;
} while (...);

你的方式,一个新的NNew对象是创建与循环的每次迭代,如果你想保持相同的对象与每次迭代,你可以尝试创建NNew对象之前做…while循环。

仅供参考,当你在堆上创建一个对象时,即使用new关键字,你应该在完成后删除它。

感谢所有帮助找到解决方案的人。

我的问题本身就有答案。我发现我的代码不能正常工作的主要原因是示例代码之外的一些基本问题。

我在问题中提供的示例代码实际上是有效的,您可以使用它重置构造函数值