1、完整word)重庆大学c++ A卷 命题人:陈波 组题人:陈波 审题人:葛亮 命题时间:2008-12 教务处制 学院 专业、班 年级 学号 姓名 公平竞争、诚实守信、严肃考纪、拒绝作弊 封 线 密 重庆大学 面向对象程序设计与C++ 课程试卷juan 2008 ~ 2009 学年 第 1 学期 开课学院: 计算机 课程号:18008035 考
2、试日期: 2009/01 考试时间: 120 分钟 题 号 一 二 三 四 五 六 七 八 九 十 总 分 得 分 (注:本卷来源于网络,是重大C++期末试卷,非考研复试的) 一、简答(25分,5分/小题) 1. 解释引用和指针的异同。 2. 什么叫晚绑定,如何实现的? 3. 在何种情况下,copy constructor会被调用?默认的拷贝构造函数如何执行对象拷贝? 4. 解释public, private, protected的意义和用途。 5. 什么叫名字装饰,名字装
3、饰在C++中起什么作用?
二、程序分析(35分)
1. 阅读下述程序,写出执行结果(6分)
#include 〈iostream〉
using namespace std;
int b=6;
int func(int &x){
cout<〈b< 4、阅读下述程序,写出执行结果并对执行过程作出解释(8分)
#include 〈fstream>
#include 〈string>
using namespace std;
ofstream out("HowMany.out”);
class HowMany {
static int objectCount;
public:
HowMany() { objectCount++; }
static void print(const string& msg = ”") {
if(msg。size() != 0) out 〈〈 msg 〈〈 ”: ";
out 5、<〈 ”objectCount = ”
<〈 objectCount 〈< endl;
}
~HowMany() {
objectCount--;
print(”~HowMany()");
}
};
int HowMany::objectCount = 0;
// Pass and return BY VALUE:
HowMany f(HowMany x) {
x。print("x argument inside f()”);
return x;
}
int main() {
HowMany h;
HowMany::print( 6、after construction of h");
HowMany h2 = f(h);
HowMany::print(”after call to f()");
}
3. 阅读程序,写出执行结果(8分)
#include 7、 〈〈 endl;
}
virtual void sleep() const{
cout <〈 "Pet::sleep” 〈〈 endl;
}
};
class Goldfish : public Pet {
public:
void eat() const {
cout << ”Goldfish::eat” <〈 endl;
}
virtual void speak() const{
cout <〈 "Goldfish::speak" <〈 endl;
}
};
int main(int argc, char* arg 8、v[])
{
cout 〈< “sizeof Pet=” << sizeof(Pet) 〈< endl;
Goldfish bob;
cout<<”sizeof bob=”〈〈sizeof(bob)〈 9、 int func(void){
return a++;
}
};
class Y : public X{
public:
void set (int c){
this-〉a = c;
}
int describe() const{
return func();
}
};
5. 将模板类Array的定义补充完整,使得程序可以正确运行。(8分)
#include 10、s Array {
enum { size = 100 };
T A[size];
public:
};
void main()
{
Array 11、 创建一个简单的Shape继承结构。Shape被定义为基类,Circle,Square,
Triangle定义为Shape的子类;为Circle,Square,Triangle定义合适的数据成员用于存储坐标、半径等信息;为三个子类定义合适的构造函数以初始化图形(构造函数参数中给出坐标,半径等信息);为三个子类定义公开函数draw()用于描绘图形;定义一个全局函数drawShape(Shape& s),该函数以一个Shape的引用为参数,但能正确地描绘出不同子类型的图形.(20分)
说明:draw函数内部不用写出具体代码,以下述形式代码代替:
cout << “Circle::draw()” <〈 endl;
3。 创建一个Message类,其构造函数使用一个string型默认值为"Unnamed”的参数.在构造函数里,用参数初始化其私有string型数据成员sValue;为Monitor类创建两个重载的print函数,其中一个零参数,它简单输出sValue的值;另外一个接受一个string型参数,它先输出参数值作为标题,再输出sValue作为内容.(10分)
答题纸






