类里面数组怎么初始化

2024-12-16 13:20:03
推荐回答(3个)
回答1:


//在类(class)中,你可以使用构造函数进行初始化。


class Num {

public:

    int i;


};

Num sNum;

sNum.i = 100;//正确


但是,直接在定义时进行初始化会出现错误

class Num {

public:

    int i = 100; // Error!错误


};

Num sNum;

而我们的确需要在构造Num类时初始化,怎么办?

我们可以使用类的“构造函数”。


构造函数的定义:

构造函数,顾名思义,即是在构造(定义)这个类时调用的函数。

在类中,一个与类名同名的函数即是该函数的构造函数。

class Num {

public:

    int i;


    Num (){//构造函数


    }


};

Num sNum;


class Num {

public:

    int i;


    Num (){//构造函数


        i = 1;//正确!


    }


};

Num sNum;


printf ("i = %d\n", sNum.i);//正确!


类的定义:“一个类中必须有构造函数,否则,类将不能被定义。”

在你的类中,编译器如果没有发现构造函数,就会为你提供一个空的构造函数。


例① - 一定义就帮你设置好了

class OutWords{

    public("无参构造函数被调用了!\n");


};

int main (void){

    OutWords OW;

    return 0;

}

例①的输出:

    无参构造函数被调用了!


例② - 比main还要先执行

class First {

    First (){


        printf("First函数被执行了!\n");


    }

};

First F;

int main (void){

    printf("main函数被执行了!\n");

    return 0;


}

例②的输出:

    First函数被执行了!

    main函数被执行了!

回答2:

class student
{
private:
float xuehao;
char *name;
int chengji[20];
student *next;
public:
student()
{
xuehao = 0;
name = NULL;
memset(chengji,0,sizeof(chengji));
next = NULL;
}
student(float x,char *nam,int c[],student *n=NULL)
{
xuehao=x;
name=new char[strlen(nam)+1];
if(name!=0)
{strcpy(name,nam);}
for(int j=0;j<20;j++)
{chengji[j]=c[j];}
n=new student;
if(n!=0)
{next=n;}
}
student(student &s)
{
xuehao=s.xuehao;
name=new char[strlen(s.name)+1];
if(name!=0)
{strcpy(name,s.name);}
for(int jj=0;jj<19;jj++)
{chengji[jj]=s.chengji[jj];}
student *n=new student;
if(n!=0)
{next=n;}
}
};

回答3:

在构造函数里面初始化。