我在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();
答案 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();