#include"iostream" using namespace std; class CUST { public: CUST(string na, string n); virtual void display(); virtual int rank() = 0; protected: string name; string net; }; CUST::CUST(string na, string n) { name = na; net = n; } void CUST::display() { cout << "学校的名字是:" << name << endl; cout << "学校的网址是:" << net << endl; } class CCST :public CUST { public: CCST(string na, string n, string sc); void display(); virtual int rank(int r) const { ran=r; return ran; }; private: string sch; int ran; }; CCST::CCST(string na, string n, string sc):CUST(na,n) { sch = sc; } void CCST::display() { cout << "学校的名字是:" << name << endl; cout << "学校的网址是:" << net << endl; cout << "学校中学院的名字是:" << sch << endl; cout << sch << "在" << name << "的排名为第" << ran << endl; } int main() { CUST c1("长春理工大学", "cust.edu"); CCST s1("长春理工大学", "cust.edu", "计算机科学与技术"); }
时间: 2024-03-09 16:51:38 浏览: 60
这段代码存在以下问题:
1. 在CCST类中,rank()函数的声明与定义不一致,声明为无参函数,定义为有参函数,需要保持一致。
2. 在CCST类中,rank()函数的实现没有给ran变量赋值,导致在display()函数中输出的值不确定。
以下是修改后的代码:
```
#include <iostream>
using namespace std;
class CUST {
public:
CUST(string na, string n);
virtual void display();
virtual int rank() = 0;
protected:
string name;
string net;
};
CUST::CUST(string na, string n) {
name = na;
net = n;
}
void CUST::display() {
cout << "学校的名字是:" << name << endl;
cout << "学校的网址是:" << net << endl;
}
class CCST : public CUST {
public:
CCST(string na, string n, string sc);
void display();
virtual int rank() const {
return ran;
};
private:
string sch;
int ran = 5;
};
CCST::CCST(string na, string n, string sc) : CUST(na, n) {
sch = sc;
}
void CCST::display() {
cout << "学校的名字是:" << name << endl;
cout << "学校的网址是:" << net << endl;
cout << "学校中学院的名字是:" << sch << endl;
cout << sch << "在" << name << "的排名为第" << ran << endl;
}
int main() {
CUST c1("长春理工大学", "cust.edu");
CCST s1("长春理工大学", "cust.edu", "计算机科学与技术");
s1.display();
return 0;
}
```
输出结果为:
```
学校的名字是:长春理工大学
学校的网址是:cust.edu
学校中学院的名字是:计算机科学与技术
计算机科学与技术在长春理工大学的排名为第5
```
阅读全文