C++中带参数的默认构造函数能在类中声明类外实现吗?
问题补充:
为什么我在类中声明并实现没有事,在类中声明类外实现就报错呢
最佳答案
不会啊,但你必须在类中声明
定义可以放在外面的
最简单的
class T
{
public:
T();
};
T::T() { }
你的问题应该是构造函数有二义性
你的Point(int a=0,int b=0,int c=0)
及缺省构造Point()
是有二义性的
若有一个变量 Point x;你是要调用哪个?
追问:
我在类中声明了呀Point(int a = 0, int b = 0, int c = 0)
追问:
为什么在类外实现的时候却报错呢 追答:
看错你的问题了若是缺省参数,函数定义时不要也不能加=0了你外面定义的point只能用Point::Point(int a,int b,int c)
追问:
可是为什么不能在类外面实现这个带参数的默认函数啊
追问:
(1)Point(){}(2)Point(int a,int b,int c){}为什么这两种可以而Point(int a = 0, int b = 0, int c = 0){}不行呢 追答:
这个是C++的规定,默认参数只能在声明中,不能写在定义中的
追问:
== 好的吧,谢谢大佬了
最佳答案由网友 whoami1978 提供
其他回答
暂无其它回答!