【发布时间】:2014-06-06 07:36:47
【问题描述】:
这是我的完整程序:
score.h
#ifndef SCORE_H
#define SCORE_H
class Score
{
private:
int* ipScore;
float fAverage;
int iSize;
public:
Score();
void enterScores();
void calcAverage();
void output();
void setSize();
int getSize();
void setScore();
int* getScore();
float getAverage();
};
#endif
score.cpp
#include <iostream>
#include "score.h"
using namespace std;
Score::Score()
{
}
void Score::enterScores()
{
cout << "How many test scores needed: ";
setSize();
cout << endl;
setScore();
for (int i = 0; i < getSize(); i++)
{
cout << "Enter score " << i + 1 << ": ";
cin >> ipScore[i];
}
cout << endl;
}
void Score::calcAverage()
{
fAverage = 0;
for (int i = 0; i < getSize(); i++)
{
fAverage = fAverage + ipScore[i];
}
fAverage = fAverage / getSize();
}
void Score::output()
{
int temp;
for (int i = 0; i < getSize(); i++)
{
for (int j = 0; j < (getSize() - 1); j++)
{
if (ipScore[j] > ipScore[j + 1])
{
temp = ipScore[j];
ipScore[j] = ipScore[j + 1];
ipScore[j + 1] = temp;
}
}
}
cout << "Sorted list of data entered is:- " << endl;
for (i = 0; i < getSize(); i++)
{
cout << "Score " << i + 1 << ": " << ipScore[i] << endl;
}
cout << endl;
cout << "The average is: " << fAverage << endl;
cout << endl;
}
void Score::setSize()
{
cin >> iSize;
}
int Score::getSize()
{
return iSize;
}
void Score::setScore()
{
ipScore = new int[getSize()];
}
int* Score::getScore()
{
return ipScore;
}
float Score::getAverage()
{
return fAverage;
}
curve1.h
#ifndef CURVE1_H
#define CURVE1_H
#include "score.h"
class Curve1: public Score
{
public:
Curve1();
void curve();
};
#endif
curve1.cpp
#include <iostream>
#include "curve1.h"
using namespace std;
Curve1::Curve1(): Score()
{
cout << "Size was: " << getSize() << endl;
}
void Curve1::curve()
{
cout << "Average score was: " << getAverage() << endl;
}
main.cpp
#include <iostream>
#include "curve1.h"
using namespace std;
int main()
{
Score scoreObj;
Curve1 curve1Obj;
scoreObj.enterScores();
scoreObj.calcAverage();
scoreObj.output();
curve1Obj.curve();
return 0;
}
首先,当我在score.cpp 中输出iSize 和fAverage 时,它们会显示正确的值。但是当我在curve1.cpp 中输出它们时,它们显示为垃圾。 :( 为什么会这样?
此外,当在main 函数中调用曲线对象时,不会显示 size cout 语句。请帮忙!!!
【问题讨论】:
-
它们是两个不同的对象?
-
是的,Curve1 对象是
curve1Obj,Score 对象是scoreObj。 -
因为它们是遗传的……也许吧??
-
这并不意味着
Curve1类型的对象知道您对Score类型的对象所做的任何事情。只有Curve1继承了Score的某些函数和变量。 -
我不知道我是不是错了但是
fAverage和iSize中的值不是已经设置了吗?并且 Curve1 只是调用getAverage和getSize来输出已经设置的值?对象在其中的作用是什么?对我来说,该对象只是调用curve函数,该函数调用getSize和getAverage。如果我错了,请告诉我。
标签: c++ function class inheritance return