繁体   English   中英

调试C ++代码

[英]Debugging a C++ code

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

#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;
    }
}

请解释

请注意,在您的代码中您可以这样做:

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

通常,您不能像这样访问对象值。 您要询问的方法是运算符重载方法,该方法定义对象在此类访问中应执行的操作。

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

手段

如果n处于范围内,则返回对对象safearay数组n的值的引用。返回值通过引用传递,因此您可以为其分配值,并且更改将在a[i]

您可以在此处阅读更多有关运算符重载的信息

有关在此处通过引用传递值的更多信息

int& operator [](int n)  

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM