24小时热门版块排行榜    

查看: 593  |  回复: 5

942363939

铁虫 (小有名气)

[求助] 阅读C++Primer第四版时遇到两个问题,求读过该书的同学解释一下,拜托了!!! 已有1人参与

拜托各位了。。。。。。。。。。。。。。。

阅读C++Primer第四版时遇到两个问题,求读过该书的同学解释一下,拜托了!!!


阅读C++Primer第四版时遇到两个问题,求读过该书的同学解释一下,拜托了!!!-1
1、感觉上面两处是否有冲突呢?


阅读C++Primer第四版时遇到两个问题,求读过该书的同学解释一下,拜托了!!!-2
2、这里book已经指向了一个空串,再让它指向“0-201-82470-1”是不是有问题呢?不是说应用只能指向最开始的那个对象吗?还是我理解错误呢?(不过实践证明这段代码没错,就是不理解)
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sanshuiheyi

铁虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
942363939: 金币+5, ★★★很有帮助, 解答的很详细 2015-04-13 09:15:27
1、没有冲突啊,类里面的那个是声明,定义在类外面,应该是这样定义,
double Account::interestRate = 一个double型数;

2、book只是个有默认参数的参数而已,使用的时候,还是看外面传来什么,构造函数也是一种函数,比如:
一个函数Test(const string& str = "";
使用的时候,你可以这样使用Test(),相当于 string str = ""; Test(str);,只是这里使用了默认参数,不需要你写了,
你还可以这样使用,string str = "test"; Test(str); 这就不使用默认参数了,这两个过程就相当于你截图的那个例子,明白?
2楼2014-12-23 09:02:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

942363939

铁虫 (小有名气)

引用回帖:
2楼: Originally posted by sanshuiheyi at 2014-12-23 09:02:28
1、没有冲突啊,类里面的那个是声明,定义在类外面,应该是这样定义,
double Account::interestRate = 一个double型数;

2、book只是个有默认参数的参数而已,使用的时候,还是看外面传来什么,构造函数也是一种 ...

第一个我明白了,有点不明白的是第二个,你说的我也懂,这个和你说的有区别,就是它的形参是个引用,我记得引用只能指向初始化的那个对象。就这个题来说吧,book已经指向了空串,再让它指向另一个字符串,这样行吗?还是说这是构造函数的特殊性呢?
3楼2014-12-23 09:45:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sanshuiheyi

铁虫 (小有名气)

引用回帖:
3楼: Originally posted by 942363939 at 2014-12-23 09:45:47
第一个我明白了,有点不明白的是第二个,你说的我也懂,这个和你说的有区别,就是它的形参是个引用,我记得引用只能指向初始化的那个对象。就这个题来说吧,book已经指向了空串,再让它指向另一个字符串,这样行吗 ...

这个和构造函数没关系,任何函数都可以,比如:void Test(const string& str = "";
可以这样调用,Test();也可以这样调用Test("hello";参数有默认值和是不是应用类型没关系,如果你采取第一种调用方式,它实际执行时,是这样执行的 string str = "";
Test(str);采用第二种方式,执行时事这样的,string str = "hello"; Test(str);其实执行时,他们的流程是一样的,只是这些步骤是让编译器给解释过来的,所以你感觉到有区别,如果把编译器插入的代码写出来,你会发现是一样的,和是不是引用没关系,两种过程使用的str是不一样的,第一个定义了个str="",你在此调用函数时,又定义了个str="hello",所以他们的结果不会相互影响,Test(const string& str);const string& str只是个形式参数,每次影响的是它之前定义个那个str,不知道这样说,说清楚了没
4楼2014-12-24 08:57:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

942363939

铁虫 (小有名气)

引用回帖:
4楼: Originally posted by sanshuiheyi at 2014-12-24 08:57:02
这个和构造函数没关系,任何函数都可以,比如:void Test(const string& str = "";
可以这样调用,Test();也可以这样调用Test("hello";参数有默认值和是不是应用类型没关系,如果你采取 ...

这个问题困扰了我好久,终于明白了,谢谢啦
5楼2014-12-24 09:53:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sanshuiheyi

铁虫 (小有名气)

客气了,相互促进
6楼2014-12-25 08:55:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 942363939 的主题更新
信息提示
请填处理意见