首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类中int数组为什么不能正确访问?该怎么解决

2012-03-25 
类中int数组为什么不能正确访问?C/C++ code#include string#include iostreamusing namespace stdcla

类中int数组为什么不能正确访问?

C/C++ code
#include <string>#include <iostream>using namespace std;class student{    private:        string name;        int score[3];        int sum;    public:        student(int s[], string  name= "");        student(const student& s);        ~student(){ /*delete score;*/ };        int* getScore() const;        int getSum() const;        string getName() const;        student& operator=(const student& s);        bool operator==(const student& s);        bool operator<(const student&  s);};student::student( int sc[], string n):name(n),sum(0){    for(int i=0; i<3; i++){        score[i] = sc[i];        sum += sc[i];    }}int* student::getScore() const{    int sc[3] = {0};    for(int i=0; i<3; i++)        sc[i] = this->score[i];    return sc;}void main(){    int sc2[3] = {10,20,30};    student s2(sc2, "赵");int* temp; temp = s2.getScore();for(int i=0; i<3; i++){    cout << "****************s2.score[" << i << "]= " << temp[i] <<endl;}}



结果为什么是:

****************s2.score[0]= 10
****************s2.score[1]= -858993460
****************s2.score[2]= 4201565
Press any key to continue


[解决办法]
int* student::getScore() const{
int sc[3] = {0};
for(int i=0; i<3; i++)
sc[i] = this->score[i];
return sc;
}

这样不行吧,sc是一个局部变量,函数返回时,内存地址被释放
[解决办法]
C/C++ code
#include <string>#include <iostream>using namespace std;class student{private:    string name;    int score[3];    int sum;public:    student(int s[], string  name= "");    student(const student& s);    ~student(){ /*delete score;*/ };    const int* getScore() const;    int getSum() const;    string getName() const;    student& operator=(const student& s);    bool operator==(const student& s);    bool operator<(const student&  s);};student::student( int sc[], string n):name(n),sum(0){    for(int i=0; i<3; i++){        score[i] = sc[i];        sum += sc[i];    }}const int* student::getScore() const{    return score;}int main(){    int sc2[3] = {10,20,30};    student s2(sc2, "赵");    const int* temp;    temp = s2.getScore();    for(int i=0; i<3; i++){        cout << "****************s2.score[" << i << "]= " << temp[i] <<endl;    }    return 0;} 

热点排行