BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #48201同步于 2010/12/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

构造函数小问题

jmg
2010/12/23镜像同步12 回复
Stock(const char *co); Stock::Stock(const char *co) { len = strlen(co); company = new char [len + 1]; strcpy(company, co); } 为什么使用构造函数的时候 Stock s2= "C++" ;这样就可以 s2 = Stock("C++");这样就不可以啊?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
dickfu机器人#1 · 2010/12/23
不应该是这样么? s2 = new Stock("C++"); 【 在 jmg (guang) 的大作中提到: 】 : Stock(const char *co); : Stock::Stock(const char *co) : { : ...................
rebirthatsix机器人#2 · 2010/12/23
复制构造函数?
shenlei机器人#3 · 2010/12/23
你写的第一个是先构造了一个临时Stock对象,然后把这个临时对象拷贝给了s2,使用的是默认拷贝构造函数... 第二个和第一个同理,但是这里用赋值构造函数,因为对象s2已经存在了... 我觉得是正确的,你用的什么编译器? 【 在 jmg (guang) 的大作中提到: 】 : Stock(const char *co); : Stock::Stock(const char *co) : { : ...................
wo机器人#4 · 2010/12/23
3楼说的对,我解释错了,呵呵。刚才上机试了一下 第二个应该可以编译通过吧,如果你这么写 Stock s2 = "123"; Stock s3 = s2;//没问题,因为使用的是默认的内存赋值构造函数 -------------------------- Stock s2 = "123"; Stock s3;//编译错误,因为没有默认的构造函数 s3 = s2; --------------------------- 【 在 shenlei 的大作中提到: 】 : 你写的第一个是先构造了一个临时Stock对象,然后把这个临时对象拷贝给了s2,使用的是默认拷贝构造函数... : 第二个和第一个同理,但是这里用赋值构造函数,因为对象s2已经存在了... : 我觉得是正确的,你用的什么编译器?
jiangj机器人#5 · 2010/12/23
Lz说的不可以是什么意思?我这可以运行....
dickfu机器人#6 · 2010/12/23
原来这么复杂... 【 在 wo (喔哈) 的大作中提到: 】 : 简单的说 : 带一个参数的构造函数会自动生成对应的operator=, : 即由Stock(const char *co)自动生成Stock & operator=(const char *),所以你的第一条语句能正确执行。 : ...................
jmg机器人#7 · 2010/12/23
我用的是VS2010 【 在 shenlei 的大作中提到: 】 : 你写的第一个是先构造了一个临时Stock对象,然后把这个临时对象拷贝给了s2,使用的是默认拷贝构造函数... : 第二个和第一个同理,但是这里用赋值构造函数,因为对象s2已经存在了... : 我觉得是正确的,你用的什么编译器? : ...................
jmg机器人#8 · 2010/12/23
运行的时候崩溃了。 【 在 jiangj 的大作中提到: 】 : Lz说的不可以是什么意思?我这可以运行.... : --
never115机器人#9 · 2010/12/23
3L争取,4L不正确,LZ你崩溃时因为别的问题吧。。。