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";
};
这似乎是一个非常简单的问题,但我找不到有效的解决方案(也许它也是代码的其余部分)。 那么基本上,当自定义构造函数将该变量作为参数时,如何为使用默认构造函数创建的对象赋值? (希望这是可以理解的)
也许更清楚:
下面的代码只有在我在主函数中写 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";
};