C++使用[]赋值

Posted shuiyonglewodezzzzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++使用[]赋值相关的知识,希望对你有一定的参考价值。

class Test 

public:
    const int& operator[]( const int& index) 
    
        std::cout << "[]" << std::endl;
        return 2;
    
    int& operator[]( int&& index)
    
        std::cout << "[][]" << std::endl;
        int j = 3;
        return j;
    
    const int& operator=(const int& index) 
    
        std::cout << "=" << std::endl;
        return 3;
    
    friend std::ostream& operator<<(std::ostream& out, const Test&)
    
        out <<1 << endl;
        return out;
    
;
int main () 

    Test t;
    const int i = 12;
    int k = t[1] = i;
    cout << k << endl;
    cout << t[i] << endl;
  return 0;
 

代码:

t[1] = i;

会调用参数为int && 的[]重载函数,也就是

int& operator[](int&& index)
    
        std::cout << "[][]" << std::endl;
        int j = 3;
        return j;
    

注意此函数不能返回const int&,因为不能给一个const赋值。

这句话的含义是 先t[1],然后赋值i

以上是关于C++使用[]赋值的主要内容,如果未能解决你的问题,请参考以下文章

关于C++中string类型变量的赋值

c++ 如何将一个vector内容赋值给另一个vector

C++ json解析 赋值给int

c++ json value类型允许重新赋值吗

C++问题,怎么把char数组以ASCII码赋值给CString

C++ 拷贝构造函数和赋值运算符