读书人

请问个重载 * 的有关问题

发布时间: 2012-02-21 16:26:23 作者: rapoo

请教个重载 * 的问题
为什么结果是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;
}

返回的都是引用

读书人网 >C++

热点推荐