#include <iostream>
int A()
{
return 1;
}
class B
{
public:
int m;
public:
B()
:m(0)
{
}
B& operator++()
{
++(this->m);
return *this;
}
};
B C()
{
return B();
}
std::ostream& operator<<(std::ostream& o, B& b)
{
return o << b.m;
}
int main(int argc, char** argv)
{
std::cout << ++(B()) << std::endl; //可以通过编译
std::cout << ++(A()) << std::endl; //不可以通过编译
std::cout << ++(C()) << std::endl; //可以通过编译
getchar();
return 0;
}
C++不允许修改任何基础类型的临时值,但对于struct和class可以。