首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问个重载 * 的有关问题

2012-02-21 
请教个重载 * 的问题为什么结果是5?return(int&)m_i//这返回的是什么(int&)?取地址?#includeiostreamus

请教个重载 * 的问题
为什么结果是5?return   (int&)m_i;       //这返回的是什么   (int&)?取地址?


#include   <iostream>
using   namespace   std;

class   INT
{
friend   ostream&   operator < <(ostream&   os,   const   INT&   i);

public:
INT(int   i):m_i(i){};

int&   operator*()const
{
return   (int&)m_i;       //这返回的是什么   (int&)?取地址?
}

private:
int   m_i;
};

ostream&   operator < <(ostream&   os,   const   INT&   i)
{
os < < '[ ' < <i.m_i < < '] ';
return   os;
}

int   main()
{
INT   I(5);
cout < <*I;
}

[解决办法]
int& operator*()const
{
return (int&)m_i; //这个返回的一个引用,而不是取地址,取址的应该是 return &m_i
}
看完引用是什么意思,你就应该明白这里为什么返回5了
INT I(5);时m_i被设置为5,*I=》(int&)m_i当然就应该返回5了

[解决办法]
int& operator*()const
{
return (int&)m_i; //return m_i; 就行了}
[解决办法]
明显是引用啊!
[解决办法]
int& operator*()const
{
return (int&)m_i;
}

int& operator*()const
{
return m_i;
}

返回的都是引用

热点排行