| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 591 人关注过本帖
标题:帮忙看看!谢谢了
取消只看楼主 加入收藏
tymstill
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-1-28
结帖率:100%
收藏
 问题点数:0 回复次数:2 
帮忙看看!谢谢了
//strquote.cpp -- different designs
#include <iostream>
#include <string>
using namespace std;
string version1(const string & s1,const string & s2);
const string & version2(string & s1,const string & s2);  //has side effect
const string & version3(string & s1,const string & s2);  //bad design

int main()
{
   string input;
   string copy;
   string result;
   
   cout<<"Enter a string: ";
   getline(cin,input);
   copy=input;
   cout<<"Your string as entered: "<<input<<endl;
   result=version1(input,"***");
   cout<<"Your string enhanced: "<<result<<endl;
   cout<<"Your original string: "<<input<<endl;
   
   result=version2(input,"###");
   cout<<"Your string enhanced: "<<result<<endl;
   cout<<"Your original string: "<<input<<endl;
   cout<<"Resetting original string.\n";
   input=copy;
   result=version3(input,"@@@");
   cout<<"Your string enhanced: "<<result<<endl;
   cout<<"Your original string: "<<input<<endl;
   
   system("pause");
   return 0;
   
}

string version1(const string & s1,const string &s2)
{
       string temp;
      
       temp=s2+s1+s2;;
       return temp;
       }
      
const string & version2(string & s1,const string & s2)
{
      s1=s2+s1+s2;
      return s1;
      }

const string & version3(string & s1,const string & s2)       //这个函数的错误在哪里?
{                                                            //书上说存在一个致命的错误:返回一个指向version3()中声明的变量的引用.具体的说,
                                                            //问题是由于下面的复制语句引发的:result=version3(input,"@@@");程序试图引用已经
                                                            //释放的内存
                                                            //不明白????高手能详细解释一下吗?
       string temp;
      
       temp=s2+s1+s2;;
       return temp;
       }

[[it] 本帖最后由 tymstill 于 2008-4-17 16:31 编辑 [/it]]
搜索更多相关主题的帖子: different include result Enter 
2008-04-17 16:11
tymstill
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-1-28
收藏
得分:0 
那跟第一个string version1(const string & s1,const string &s2)
{
       string temp;
      
       temp=s2+s1+s2;;
       return temp;
       }
有什么区别吗?
2008-04-17 16:30
tymstill
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-1-28
收藏
得分:0 
为什么第一个会产生临时变量,第二个不会呢?是不是前面多了个const呢?
2008-04-18 08:51
快速回复:帮忙看看!谢谢了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026916 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved