调用默认构造函数

时间:2011-03-22 01:15:21

标签: c++ constructor

我在C ++中遇到了默认构造函数的问题。这是一件简单的事情,但看不出它有什么问题。

我有一个带有3个可选参数的构造函数,初始化列表中包含const值:

data::data(int D = 1, int M = 1, int Y = 1583) : Day(D), Month(M), Year(Y)  
{  
    if (!CorrectDate()) throw "Wrong Date!";  
}  

为什么我可以使用一个,两个或三个参数调用它并且它工作得很好但是当我没有参数调用它时却没有?

data tommorrow();

4 个答案:

答案 0 :(得分:3)

data tomorrow();是函数的声明,它返回data并且不带参数。要创建一个没有显式构造函数参数的data对象,只需在没有括号的情况下执行data tomorrow;

答案 1 :(得分:2)

将其定义为

data tomorrow;

data tomorrow();与定义名为tomorrow的函数相同,后者返回data

答案 2 :(得分:1)

您可能正在做类似

的事情
data something();

这不是名为data的{​​{1}}类型变量的初始化,而是一个名为something的函数的声明,它返回something

如果是这种情况,那么正确的是:

data

答案 3 :(得分:0)

您正在声明一个返回数据的函数,您可以这样做:

data tommorow;

没有(),或者你可以这样做:

data tommorow = data();