鱼C论坛

 找回密码
 立即注册
查看: 569|回复: 1

为什么ar[2]的初始值是32

[复制链接]
发表于 2024-3-9 20:04:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
#include<string.h>
using namespace std;
class cls
{
     int ar[6];
public:
       
    int& operator[] (int i);   //重载"[]"操作符,"[]"内的操作数的操作数是int类型
    int& operator[] (const char* str);  //重载"[]"操作符,"[]"内的操作数是字符串类型
    int print(int i){
            return ar[i];
        }
};
int& cls::operator[] (const char* str)
{
    //1st 2nd 3rd 4th 5th
    if (!strcmp("1st", str))
                //printf("%d %d",1,ar[0]);
        return ar[0];
    if (!strcmp("2nd", str))
        return ar[1];
    if (!strcmp("3rd", str))
        return ar[2];
    if (!strcmp("4th", str))
        return ar[3];
    if (!strcmp("5th", str))
        return ar[4];
    if (!strcmp("6th", str))
        return ar[5];
}

int main(void){
    cls c;
    int i=0;
    for(i=0;i<6;i++){
            printf("%d %d\n",i,c.print(i));
        }
    printf("c[\"1st\"] = %d\n", c["1st"]);
    //c["2nd"] = 66;
    printf("c[\"2nd\"] = %d\n", c["2nd"]);
    printf("c[\"3rd\"] = %d\n", c["3rd"]);
    printf("c[\"4rd\"] = %d\n", c["4th"]);
    printf("c[\"5rd\"] = %d\n", c["5th"]);
    printf("c[\"6rd\"] = %d\n", c["6th"]);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-9 20:05:15 | 显示全部楼层
ar的初始值是32是因为在类cls中定义了一个int类型的私有变量ar,但没有为其赋初始值,所以默认初始化为0。

在main函数中,通过cls类的实例c,我们可以调用operator函数来操作ar这个变量。在operator函数中,根据输入的字符串参数(str),决定返回ar的引用。

在你的代码中,无论输入的是什么字符串,都会返回ar的引用,而不做任何其他操作。所以最后输出的结果就是ar的值,即32。

如果你想根据输入的字符串参数来决定返回不同的结果,可以在operator函数中添加逻辑判断和操作。例如:
int& cls::operator (const char* str)
{
    if (!strcmp("1st", str))
        return ar;
    if (!strcmp("2nd", str))
        return ar + 1;
    if (!strcmp("3rd", str))
        return ar * 2;
    // 其他情况...
}

这样就可以根据输入的字符串返回不同的结果了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 12:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表