| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4453 人关注过本帖
标题:函数返回局部变量的引用或指针
取消只看楼主 加入收藏
zzt_428
Rank: 2
来 自:南京师范大学
等 级:论坛游民
威 望:2
帖 子:243
专家分:22
注 册:2008-7-6
收藏
 问题点数:0 回复次数:1 
函数返回局部变量的引用或指针
不是说函数不可以返回指向局部变量或临时变量的引用吗?  那么下面我这个代码为什么执行结果是对的,没有发现问题?

//---file1:mytime.h  Time类的声明
#ifndef MY_TIME_H_
#define MY_TIME_H_

class Time
{
public:
    Time();
    Time(int h, int m=0);
    void AddMin(int m);
    void AddHour(int h);
    void Reset(int h=0, int m=0);
    const Time &Sum(const Time &t) const;
    void Show() const;
private:
    int hours;
    int minutes;
};
#endif

//file2:mytime.cpp  类的实现
#include <iostream>
#include "mytime.h"


Time::Time()
{
    hours=minutes=0;
}

Time::Time(int h,int m)
{
    hours=h;
    minutes=m;
}

void Time::AddHour(int h)
{
    hours+=h;
}

void Time::AddMin(int m)
{
    minutes+=m;
    hours+=minutes/60;
    minutes%=60;
}

void Time::Reset(int h, int m)
{
    hours=h;
    minutes=m;
}

const Time &Time::Sum(const Time &t) const   // 这里的sum是局部变量,函数执行完毕,变量被销毁.我这里
{
    Time sum;                           //返回指向局部变量sum的引用,为什么编译没有出错啊?
    sum.minutes=minutes+t.minutes;
    sum.hours=hours+t.hours+sum.minutes/60;
    sum.minutes %= 60;

    return sum;

}

void Time::Show() const
{
    std::cout << hours << "hours" << minutes << "minutes";
}


//file3:usetime.cpp  

#include <iostream>
#include "mytime.h"

int main()
{
    using std::cout;
    using std::endl;

    Time planning;
    Time coding(2,40);
    Time fixing(5,55);
    Time total;

    cout << "planning time =";
    planning.Show();
    cout << endl;

    cout << "coding time=";
    coding.Show();
    cout << endl;

    cout << "fixing time=";
    fixing.Show();
    cout << endl;

    total=coding.Sum(fixing);
    cout << "coding.sum(fixing)=";
    total.Show();
    cout << endl;
    
    return 0;
}


执行结果是对了.
哪位能指教一下,感激不尽!
搜索更多相关主题的帖子: 变量 指针 函数 局部 
2008-08-26 12:19
zzt_428
Rank: 2
来 自:南京师范大学
等 级:论坛游民
威 望:2
帖 子:243
专家分:22
注 册:2008-7-6
收藏
得分:0 
$$$$
编译确实可以通过啊,,但是书上明明写着,函数不可以返回临时变量或局部变量的引用的啊.
2008-08-26 14:12
快速回复:函数返回局部变量的引用或指针
数据加载中...
 
   



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

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