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