C++中带参数的默认构造函数能在类中声明类外实现吗?

原问题:C++中带参数的默认构造函数能在类中声明类外实现吗?
分类:编程开发 > 最后更新时间:【2017-07-28 01:23:10】
问题补充:

为什么我在类中声明并实现没有事,在类中声明类外实现就报错呢

最佳答案

不会啊,但你必须在类中声明

定义可以放在外面的

最简单的

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  提供
  • 公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
    19

    分享到:

    其他回答

    暂无其它回答!

      推荐