C++ 委托(delegate)构造函数

标签 c++ constructor

你好我对Java比C++更熟悉

测试.h:

class Test
{
private:
int a,b,c;
public Test(int a, int b, int c);
}

测试.c

Test::Test(int a, int b, int c)
{
this->a = a;
this->b = b;
this->c = c;
}
Test::Test(int a, int b)
{
this(a, b, 0);
}
Test::Test(int a)
{
this(a, 1)
}
Test::Test()
{
this(2)
}

1 - 我是否必须在 test.h 中键入每个构造函数签名?

2 - 如何编写构造函数的多个定义?

3 - 我读到您可以使用默认值在 1 个定义中组合多个构造函数。这是怎么做到的

谢谢

最佳答案

从 c++11 开始,一个构造函数可以服从另一个构造函数。因此,如果您想避免在界面中发布默认值,您可以这样做:

// declaration
struct X
{
    X(int a, int b, int c);
    X(int a, int b);
    X(int a);
    X();

private:
    int a,b,c;
};

// definition    
X::X(int a, int b, int c)
: a(a), b(b), c(c)
{}


X::X(int a, int b)
: X(a, b, 2)
{
}


X::X(int a)
: X(a, 1, 2)
{
}

X::X()
: X(0,1,2)
{
}

关于C++ 委托(delegate)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34159446/

相关文章:

c++ - 从点云生成近似 NURBS 曲面

c++ - SingleLinkedList 的析构函数导致段错误

c++ - 从 Python 调用 C++ API 时 dynamic_cast 失败

javascript - 变量是如何在 Angular 工厂中初始化的?

c++ - 将类的 vector 写入文件的方法

c++ - 概念及申报顺序

C++:如何在命令提示符中的特定位置绘制 ASCII 字符

c++ - 通过 new 赋值一个复杂的构造函数

java - 在构造函数中初始化另一个类的对象

c++ - 我分配了一个指针,它自己清空了