求助:什么时候应该用默认的构造函数

霍大脚 2007-12-30 10:55:44
有几次,程序写玩了,都提示说:缺少默认构造函数,请高手指点,什么时候改用啊


默认构造函数:比如类M
M(){}
请不要说看到错误提示就用了
...全文
141 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
HelloDan 2007-12-31
  • 打赏
  • 举报
回复

这个问题嘛,就是只要你要用到默认情况的情况下你都应该写一个默认的构造函数。因为如果你什么构造函数都不写的话C++会自己帮你生成一个。但有可能不是你要的(尽管这种情况很少)。但当你写了任何一个构造函数之后系统不会自己生成默认构造函数给你的了。所以会提示缺少默认构造函数,但其他构造函数只要是你定义的了就可以用。但对于的重用和扩展来说,我认为还是最好写上吧。
software061104 2007-12-31
  • 打赏
  • 举报
回复
是啊,好象6楼写错了吧A(int m=0):m(i){}--------------应该这样吧!
A(int m=0){m=i;}
我试过了,你那种形式不行
zhangyanli 2007-12-31
  • 打赏
  • 举报
回复
很简单,你肯定是定义了构造函数,他有参数,

又没定义无参构造函数,但是你有用了,常犯的小错误,o(∩_∩)o...
software061104 2007-12-31
  • 打赏
  • 举报
回复
同意5,6楼的哈
ryfdizuo 2007-12-30
  • 打赏
  • 举报
回复

你可以:
class A
{
public:
A(int m=0)
:m(i)
{}
private:
int i;
};
构造函数复合一下;
sakurakai 2007-12-30
  • 打赏
  • 举报
回复
默认构造函数是在未提供显式的初始化值时,被用来创建对象的构造函数。
当且仅当没有定义任何构造函数时,编译器才会提供默认构造函数,
如果为类定义了构造函数,就必须为它提供默认的构造函数。


class A
{
private:
int a;
};
A a; //调用系统提供的默认构造函数


//////////////
class B
{
private:
int a;
public:
B(int b){ a = b; }
};

B a; //编译出错,因为没有提供默认构造函数


霍大脚 2007-12-30
  • 打赏
  • 举报
回复
搞错了,是“任何”不是“任务”。
======================================
sjdev 2007-12-30
  • 打赏
  • 举报
回复
搞错了,是“任何”不是“任务”。
sjdev 2007-12-30
  • 打赏
  • 举报
回复
在任务情况下都写为类提供默认构造函数,就行了。
healer_kx 2007-12-30
  • 打赏
  • 举报
回复
一般来说,我把默认和有参的构造函数看成一样的东西,这样你就不会问这样的问题了。

64,318

社区成员

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

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