在 C++ 入门第 5 版中说,为所有参数提供默认参数的构造函数也定义了默认构造函数:

class Point {
    public:
        //Point(); // no need to define it here.
        Point(int x = 0, int y = 0) : x_(x), y_(y){
            std::cout << "Point(int=0, int=0)" << std::endl;
        } // synthesize default constructor Point()
        int x_;
        int y_;
};

int main(){
    Point pt; // default ctor Point() or Point(int, int)?
    Point pt2 = Point(); // this won't compile?!
}

正如你在上面看到的,我出于某种原因想要调用默认的构造函数 Point() 而不是 Point(int, int) 但我得到的是后者不是默认的构造函数?!

那么是否可以调用为所有参数提供默认参数的构造函数提供的类的默认构造函数?谢谢你。

最佳答案

一个类最多可以具有一个默认构造函数。如果具有参数的构造函数是默认构造函数,则可能不存在不带参数的默认构造函数。否则,默认构造函数的调用将是模棱两可的。



嗯,是。在这种情况下,默认构造函数是为所有参数提供默认参数的构造函数。例子:

class Point {
    public:
        Point(int x = 0, int y = 0);
};

int main(){
    Point pt; // the default constructor Point(int,int) is invoked
}

关于c++ - 如何调用类的默认构造函数,其构造函数由具有所有默认参数的 ctor 提供?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57227936/

10-14 18:39
查看更多