打印

面试题

[复制链接]
1185|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yybj|  楼主 | 2013-10-28 21:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在面试,考试的是C++的知识,不是很熟,请教一下。

1.函数声明 void AddString1(const char *pszTxt)和void AddString2(char *pszTxt)有什么区别?什么原因要加上const?

2.void Func(CString strTxt)和void Func2(const CString &strTxt)有什么区别,哪一个好?

相关帖子

沙发
火箭球迷| | 2013-10-28 21:28 | 只看该作者
1.函数声明 void AddString1(const char *pszTxt)和void AddString2(char *pszTxt)有什么区别?什么原因要加上const?
前者 pszTxt值不能被修改,后者能被修改

2.void Func(CString strTxt)和void Func2(const CString &strTxt)有什么区别,哪一个好?
前者将strTxt拷贝一个副本传递
后者传递的是一个引用,效率高,cost限定传人不的值不能被修改

使用特权

评论回复
板凳
xsgy123| | 2013-10-28 21:33 | 只看该作者
1.函数声明 void AddString1(const char *pszTxt)和void AddString2(char *pszTxt)有什么区别?什么原因要加上const?

根据所提供的方法名称得到的信息,是需要添加一个string,既然是添加的话,想必是从scr添加到des中,也就是不能修改scr中的数据,保证scr的数据的安全,此时就采用const。

2.void Func(CString strTxt)和void Func2(const CString &strTxt)有什么区别,哪一个好?

第二种,为什么呢,
首先,如果是内置类型的话,两种都可以,没有任何的区别
其次,如果是对象类型,那么我们此时就采用第二种,因为在传递参数的时候,参数是实参时要产生一个临时对象,这个临时对象并不是我们想要的,而且,需要花费一定的代价,所以我们就考虑到了采取引用作为参数,就能达到这个目的,传引用的话,可能在user不小心改变了,该参数的值,这个也是我们不想看到的,为了保证数据的有效性和安全性,我们再在外面采用const修饰一下,保证了数据的安全,整个参数列表就是为了提高效率和保证数据的安全性,。

使用特权

评论回复
地板
玛门的老婆| | 2013-10-29 10:37 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

2496

帖子

1

粉丝