最赞回答 / onemoo
new type 和 new type() 都是合法的写法,不过略有区别:对于有默认构造函数的类型,new type 和 new type() 都是调用默认构造函数来实例化,没有什么区别。对于built-in类型,new int得到的int内存中是随机值(未初始化),new int() 实例化的int会初始化为0(内置类型基本上会被初始化为0)。
2015-08-04
已采纳回答 / onemoo
报的错误是什么? 错误提示都在里面,下次出错时好好看看,对找错误会有帮助的。如果你的成员函数是定义在类定义中的,则大括号后不用加分号。所以代码中拷贝构造函数的大括号后面不用加分号。 如果你是把大括号去掉了,那表明你是在类定义中声明了一个拷贝构造函数,并没有定义它,编译链接时会报未定义错误。你说你把函数定义复制到main函数中?! 函数不能嵌套定义,你这样做肯定是错的。还有这个代码中根本就没有用到拷贝构造函数。
2015-08-02
最赞回答 / 朵小妖儿
若输入中文,则需要加name[1]cout<<"your name first letter is:"<<name[0]<<name[1]<<endl;但是此时英文名就不适用了
2015-07-28
已采纳回答 / IT饱
请记住在 类 后 打:class Student{public: Student() { m_strName = ""; } Student(string _name) { m_strName = _name; } Student(const Student &stu) { } ~Student() { } void setName(string _name);...
2015-07-25
讲师回答 / james_yuan
对于具有默认构造函数的类来说,两者实例化之后的数据本质是一样的,只不过一个从堆中分配内存,一个从栈中分配内存。比如:在类中有一个成员x,如果在构造函数中有:x =10, 那么无论是Student *stu = new Student(),还是Student stu,其结果都是对象中的x被赋值了10,最后顺便说一下,你的代码写错了,第一,不能写成Student stu = new Student(),而应写成Student *stu = new Student(),第二,不能写成Student stu = ...
2015-07-23
已采纳回答 / onemoo
不加括号代表默认初始化(default initialize),类型后加上空括号代表值初始化(value initialize)。对于有构造函数的类,这两种形式都是调用其默认构造函数。没有区别。但对于built-in类型,由于没有默认构造函数,所以默认初始化会导致初值未定。而值初始化则一般会初始化为0。
2015-07-20