关于构造函数默认形参的问题

raincross98 2008-04-15 10:17:35
构造函数支持默认形参,但为什么带上默认形参值后只能在类的内部定义,在类外部定义时带上默认形参就会出错,是不能带吗,为什么?
如:
class point
{private:
int x, y;
public:
point(int xx = 0, int yy = 0) ; //构造函数
point(point &p); //拷贝构造函数原型
~point(){cout<< "析构函数被调用"<< endl;}
//析构函数
int get_x() {return x;}
int get_y() {return y;}};
point::point(int xx=0 , int yy=0 )
{x = xx;
y = yy;
cout << "构造函数被调用"<< endl;}
...全文
160 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdsdtc 2008-04-15
  • 打赏
  • 举报
回复
学习
two_ears 2008-04-15
  • 打赏
  • 举报
回复
内部的叫做声明,外面那个叫做定义
函数的定义是原型+函数体
原型里又写了一遍默认参数,叫做重复定义
违反了单一定义的原则
[Quote=引用楼主 raincross98 的帖子:]
构造函数支持默认形参,但为什么带上默认形参值后只能在类的内部定义,在类外部定义时带上默认形参就会出错,是不能带吗,为什么?
如:
class point
{private:
int x, y;
public:
point(int xx = 0, int yy = 0) ; //构造函数
point(point &p); //拷贝构造函数原型
~point(){cout < < "析构函数被调用" < < endl;}
//析构函数
int get_x() {return x;}
int get_y() {return…
[/Quote]
baihacker 2008-04-15
  • 打赏
  • 举报
回复


//默认参数只能出现一次

class point
{
private:
int x, y;
public:
point(int xx = 0, int yy = 0) ; //构造函数
point(point &p); //拷贝构造函数原型
~point(){cout << "析构函数被调用" << endl;}
//析构函数
int get_x() {return x;}
int get_y() {return y;}
};
point::point(int xx, int yy)
{
x = xx;
y = yy;
cout << "构造函数被调用" << endl;
}
或者
class point
{
private:
int x, y;
public:
point(int xx, int yy) ; //构造函数
point(point &p); //拷贝构造函数原型
~point(){cout << "析构函数被调用" << endl;}
//析构函数
int get_x() {return x;}
int get_y() {return y;}
};
point::point(int xx = 0, int yy = 0)
{
x = xx;
y = yy;
cout << "构造函数被调用" << endl;
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧