c++ - 解释 C++ 中的运算符重载

标签 c++

class Vector { 
      public: 
       Vector(int s) :elem{new double[s]}, sz{s} { }
       double& operator[](int i) { return elem[i]; } //function 2
       int size() { return sz; } 

        private: 
            double∗ elem;  
            int sz; 
     };

代码片段来自:C++ 编程语言第 4 版,Bjarne Stroustrup
IDE:Microsoft Visual Studio Professional 2013

请解释一下 operator 关键字的作用是什么?我尝试搜索除了运算符重载之外找不到其他任何东西,这不是我的问题

double read_and_sum(int s) { 
                    Vector v(s);                     //line 1
                    for (int i=0; i!=v.size(); ++i) 
                    cin>>v[i];                        //line 3
                    double sum = 0; 
                    for (int i=0; i!=v.size(); ++i) 
                    sum+=v[i];
                     return sum;
                    }

这里line1传递了类vector的构造函数需要的int类型的参数s,没问题。

但是在第 3 行中,语句“cin>>v[i]”如何有效? ,因为对象 v 没有声明为对象数组。即使它是有效的,值(value)去哪儿了..?

最佳答案

看来您是 C++ 的新手。以下有关运算符重载的链接可能会有用。

运算符重载基础知识:Operator Overloading .

可以重载的运算符的完整列表:Operator Overloading

关于c++ - 解释 C++ 中的运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22694725/

相关文章:

c++ - Opencv , 视频叠加

c++ - "uFlags &= ~CHN_PANNING"命令有什么作用?

c++ - 强制 foreach 使用 const 迭代器

c++ - 检测 32 位或 64 位 Windows

c++ - 实现指向对象的指针的模板化双向链表

c++ - 为什么 C++20 中的 time_of_day 和 hh_mm_ss 是两种不同的类型?

c++ - 如何随着时间的推移在OpenGL中平移和旋转三角形?

c++ - 手动实例化模板时出错

c++ - 抽象类的 shared_ptr vector 到拷贝 vector

c++ - Qt 5.3。 QtWidgets : No such file or directory #include <QtWidgets>