调试一个c++代码

Debugging a C++ code

本文关键字:一个 c++ 代码 调试      更新时间:2023-10-16

我无法理解以下代码中函数返回的内容(指针或值)。

#include<iostream>
using namespace std;
class safearay
{
    int a[10];
public:
    int& operator [](int n)
    {
        if(n<0 || n>5 )
        {
            cout<<"Exceeded bounds"<<endl;
        }
        return a[n];
    }
};
int main()
{
    safearay sa1;
    for (int j=0;j<10;j++)
    {
        sa1[j]=j*j;
    }
    for (int j=0;j<10;j++)
    {
        int u=sa1[j];
        cout<<u<<endl;
    }
}

请解释

int& operator [](int n)  

返回对int的引用。
本质上,您可以将其用作int,但更改也会影响类中的a[n](因为它已返回)。它就像一个没有所有*的指针,除了你不能改变它指向的地址。

注意在你的代码中这样做:

 safearay sa1;
sa1[j]=j*j;

通常不能像这样访问对象值。你问的方法是operator overload方法,它定义了对象在这样的访问中会做什么。

int& operator [](int n)
    {
        if(n<0 || n>5 )
        {
            cout<<"Exceeded bounds"<<endl<<;
        }
        return a[n];
    }

如果n是in,

返回对象safearay中数组a的第n位值的引用范围返回值是通过引用传递的,因此您可以对其进行赋值,更改将在a[i]

中进行。

你可以在这里阅读更多关于操作符重载的信息

关于通过引用传递值的更多信息在这里