關於臨時變量的值的修改

#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可以。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章