关于重载:我可以在C ++中调用另一个重载的构造函数吗?

Can I call another overloaded constructor in C++?

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
10
11
12
13
class draw
{
    draw(circle i)
    {
        // draw a circle;
    }

    draw(circle i, circle j)
    {
        draw(i);
        draw(j);
    }
}

即使使用模板,也可以调用C++中同一类的另一个重载构造函数吗?


不,在C++中,不能有一个构造函数直接调用另一个构造函数(至少不超过一次)。但是,可以让每个构造函数调用执行实际工作的第三个方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class draw
{
    draw(circle i)
    {
        do_draw(i);
    }

    draw(circle i, circle j)
    {
        do_draw(i);
        do_draw(j);
    }

    void do_draw(circle c)
    {
        // draw a circle;
    }
}