为了账号安全,请及时绑定邮箱和手机立即绑定

已采纳回答 / onemoo
优势就是你可以手动管理内存,可以控制堆上对象的生存时间。函数中,栈上的对象在函数结束后就会被销毁,如果你想要生成一个可以一直存在的对象,就需要将其构造在堆中。

已采纳回答 / AAnonymous
都可以,当然你要调用含参构造函数时就必须带括号了。C++和Java不同,Java都要括号的

已采纳回答 / onemoo
老师并没有说错。你说的那些确实都可以作为默认构造函数,所以它们只能有一个。 因为如果存在多个,那么在需要调用默认构造函数的时候,编译器就不知道要调用哪一个了。

已采纳回答 / onemoo
是共享的。但也不能叫做代码复用。不仅是成员函数,所有的函数在程序中都只有一份。

已采纳回答 / AAnonymous
你定义的类名是小写的。为何创建对象时要大写?

已采纳回答 / onemoo
报的错误是什么?  错误提示都在里面,下次出错时好好看看,对找错误会有帮助的。如果你的成员函数是定义在类定义中的,则大括号后不用加分号。所以代码中拷贝构造函数的大括号后面不用加分号。 如果你是把大括号去掉了,那表明你是在类定义中声明了一个拷贝构造函数,并没有定义它,编译链接时会报未定义错误。你说你把函数定义复制到main函数中?!  函数不能嵌套定义,你这样做肯定是错的。还有这个代码中根本就没有用到拷贝构造函数。

已采纳回答 / IT饱
打代码的时候请认真点,还有VC6.0估计也不能过<...图片...>

已采纳回答 / IT饱
请记住在 类 后 打:class Student{public:    Student()    {        m_strName = "";    }    Student(string _name)    {        m_strName = _name;    }    Student(const Student &stu)    {            }    ~Student()    {            }    void setName(string _name);...

讲师回答 / james_yuan
对于具有默认构造函数的类来说,两者实例化之后的数据本质是一样的,只不过一个从堆中分配内存,一个从栈中分配内存。比如:在类中有一个成员x,如果在构造函数中有:x =10, 那么无论是Student *stu = new Student(),还是Student stu,其结果都是对象中的x被赋值了10,最后顺便说一下,你的代码写错了,第一,不能写成Student stu = new Student(),而应写成Student *stu = new Student(),第二,不能写成Student stu = ...

已采纳回答 / 康振宁
没有,不过一般在实际开发中,为了别人不能随便操作你的数据成员,所以一般把数据成员扔到private下,这也是封装的好处

已采纳回答 / onemoo
不加括号代表默认初始化(default initialize),类型后加上空括号代表值初始化(value initialize)。对于有构造函数的类,这两种形式都是调用其默认构造函数。没有区别。但对于built-in类型,由于没有默认构造函数,所以默认初始化会导致初值未定。而值初始化则一般会初始化为0。
课程须知
本课程是C++初级课程 需要熟练掌握C++语言基础语法
老师告诉你能学到什么?
1、类的定义与对象实例化 2、string类型及属性封装 3、类外定义 4、构造函数与初始化列表 5、析构函数

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消