Cpp/C++ 为默认构造函数分配默认值

Cpp/C++ Assign Default value to default constructor

这似乎是一个非常简单的问题,但我找不到有效的解决方案(也许它也是代码的其余部分)。 那么基本上,当自定义构造函数将该变量作为参数时,如何为使用默认构造函数创建的对象赋值? (希望这是可以理解的)

也许更清楚: 下面的代码只有在我在主函数中写 foo ex2(2) 而不是 foo ex2() 时才有效。那么如果对象是使用默认构造函数

创建的,我如何为x分配默认值
class foo {

public:
    int y;
    int x;
    static int counter;

    foo()
    {
        y = counter;
        counter++;
        x = 1;
    };

    foo(int xi) 
    {
        y = counter;
        counter++;
        x = xi;
    };

};

int foo::counter = 0;

int main()
{

    foo ex1(1);
    foo ex2();

    std::cout << ex1.y << "\t" << ex1.x << "\n";
    std::cout << ex2.y << "\t" << ex2.x << "\n";
    std::cin.get();
};

这条记录

foo ex2();

不是 class foo 的对象声明。

这是一个 return 类型 foo 且没有参数的函数声明。

你需要写

foo ex2;

foo ( ex2 );

foo ex2 {};

foo ex2 = {};

如上所述。然后给一个默认值赋值:

class foo {
public:
    int y;
    int x;
    static int counter;
    foo(int xi = 1) : x(xi)
    {
        y = counter;
        counter++;
    };
};
int foo::counter = 0;

int main()
{
    foo ex1(3);
    foo ex2;

    std::cout << ex1.y << "\t" << ex1.x << "\n";
    std::cout << ex2.y << "\t" << ex2.x << "\n";
};