2015-02-23 137 views
0

是从下面的代码错误的拷贝构造函数

class first 
{ 
    public: 
    first(const first &f) 
    { 
    } 
}; 

main() 
{ 
    first fobject; 
    first sobject = fobject; 
} 

错误我得到得到一个错误是“呼叫太少参数先::第一(const的第一远&)”

有人可以帮忙吗?

Regards, Aswin。

回答

0

有2个问题,你的代码

1您的拷贝构造函数是你没有提供一个默认为空PARAM构造函数来创建类的“第一”

最佳实践的第一个实例私人 和 2你应该总是创建一个构造函数,析构函数,复制构造函数。

class first 
{ 
    public: 
     first() {} 
     first(const first &f) {} 
}; 

main() 
{ 
    first fobject; 
    first sobject(fobject); 
} 
+0

Appdjava:我编辑了文件,复制构造函数存在于公共访问说明符中。仍然得到错误,但如果我定义了一个默认的构造函数,错误消失了。现在我想知道,在这里编写一个默认构造函数是强制性的。 – Prasath 2015-02-23 11:42:19

+0

@Prasath通常不需要创建默认构造函数。但是你需要一个代码,因为你正在创建没有任何参数的'fobject'。所以你必须提供一个默认的构造函数来创建该对象。 – Yeager 2015-02-23 11:45:05