一、 判断题(15分)(对的打错的打X)
1.友元函数用于允许一个函数访问不相关类的私有部分。
2.构造函数可以被继承。
3.动态绑定的多态性是通过虚函数实现的。
4.在C++中,传引用调用等同于传地址调用。
5.重载函数必须有不同的参数列表。
6.可以用delete释放不是用new运算符分配的内存。
7.类成员的默认访问模式是privateo
8.在类Time中的析构函数可以声明为:void ~Time(int);
9.const对象必须初始化。
10.在C++中,只能重载已有的运算符。
二、 选择题(20分)
1.关键字 说明对象或变量初始化后不会被修改。
a. static b. public c. const d. inline
2.如果调用带有默认参数的函数时缺少一个参数,则 参数就作为这一参数。
a.第一个 b.最后一个 c.中间一个 d.以上都不是
3.成员函数可声明为静态的,条件是它不访问 类成员。
a,静态 b.常数 c.非静态 d,公共
4.内联函数执行起来比标准函数 o
a.更慢 b.更快 c.次数更多 d.以上都不是
5.默认参数的值由 提供。
a,该函数 b.调用程序 c,上述二者 d,以上都不是
6.在C++中,混合类型表达式。
a. 允许存在 b.为一错误 c. 从int到float d.从float到int
7.表达式long(intVar) 也可表示为。
a. intvar = long; b. intVar(long) c. (long)intVar d,以上都不是
8.静态数据成员的生存期 o
a.与整个程序相同 b.不长于类的生存期
c. 取决于创建的对象数 d.以上都不是
9.要让一个类中的所有对象具有共同的数据,请使用。
a.常数成员变量 b.私有数据成员
c.静态数据成员 d,以上都是
10.设置虚基类的目的是:
a.简化程序 b.消除二义性 c.提高运行效率 d.减少目标代码
三、 指出下列程序片段中的错误标号,写出正确语句或解释错在何处。(20分)
1)①int index=675;
%1constint *ptr=&index;
%1int *constntptr=&index;
%1*ptr=555;
%1*ntptr=666;
@int another=8;
®ptr=& another;
⑧ ntptr=&another;
2)©intarrp;
(2)arrp=new int[15];
©delete arrp;
3)下面程序为什么会编译错误,并改正错误(提出解决办法)。
class window
{
protected:
intbasedata;
};
class border: public window
{};
class menu: public window
{};
classborder_and_menu: public border, public menu
{
public:
int show()
( returnbasedata;
}
4)改正下面程序段中的错误,写出整个正确的程序段 template<T> void print(T *a)
( cout«a«,\n,;}
void main()
(
constint x=0;
cout«y«,\n,;
int y;
x=5;
int* p
P=&y;
print(p);
return 0;
)
四、写出下面程序的执行结果:(15分)
1)#include <iostream> using namespace std;
class A
(friend double count(A&);
public:
A(double t, double r):total(t),rate(r){) private:
double total;
double rate;
};析构函数的定义
double count(A& a)
(
a.total+=a.al;
al;
}
int main(void)
(
A x( 80,0.5),y( 100,0.2);
cout«count(x)«,,,«count(y)«,\n'; cout«count(x)«\n*;
return 0;
}
执行结果:
2)
#include<iostream> using namespace std;
class Count(
private: staticint counter;
intobj_id;
public:
Count(); //constructor
static void display_total(); //static function void display();
~Count。; //destructor
};
int Count::counter; //definition of static data member Count: :Count() //constructor {
counter++;
obj_id = counter;
}
Count: :~Count() //destructor counter--;
cout«"Object number "«obj_id«" being destroyed\n";
}
void Count: :display_total() //static function
(
cout«"Number of objects created is = "«counter«endl;
}
void Count::display()
(
cout« "Object ID is "«obj_id«endl;
}
int main(void)
(
Count al;
Count:: di splay_total();
Count a2, a3,a4;
Count::di spl ay_total();
a2.display();
a4.display();
return 0;
}
3) #include <iostream>
using namespace std;
class BASE
{
char c;
public:
BASE(char n):c(n)()
virtual - B ASE() (cout«c;}
};
classDERIVED:public BASE(
char c;
public:
DERIVED(char n):BASE(n+l),c(n)()
〜DERIVED。{coutvvc;}
};
int main(void)
( DERIVED(X);
return 0;
}
五、程序填空:(10分)
#include <iostream>
using namespace std;
class A
(1)
char name[80];
public:
A((2) ) ( (3)}
};
class B(4)
{
public:
B(const char*n)(5) {}
voidPrintName() (cout«,,name:,,«name«endl;};
};
void main()
{
Bbl(“Ling Li”);
bl.PrintName();
} // 执行结果: name: Ling Li
public:
B(const char*n)(5){}
voidPrintName() {coutvv''name:"vvnamevvendl;};
};
void main()
{
Bbl("LingLi”);
bl.PrintName();
} // 执行结果:name: Ling Li
杭州电子科技大学学生考试卷(A)答案
一、 判断题(15分)
1) V 2) X 3) V 4) X 5) V 6) X 7) V 8) X 9) V 10) V
二、 选择题(20分)
1) c 2) b 3) c 4) b 5) c 6) a 7) c 8) a 9) c 10) b
三、 指出下列程序片段中的错误,并解释错在何处。(20分)
1)④*ptr=555; ptr是指向整数常量的指针
⑧ntptr=&another; ntptr是常量指针,不能指向别的的变量
2)①intarrp; 应改为:int *arrp;
③delete arrp; 应改为:delete [ ]arrp;
3)return basedata:〃在 border and menu 中引用 basedata 时产生二义性,应 使用虚基类
应改为:
classborder:virtual public window
{ };
class menu: virtual public window
{ };
4)整个正确的程序段(参考): #include <iostream.h> 〃加本句
template<typename T> 〃力口 typename void print(T *a) ( cout«a«\n';} void main()
{ int y=10; 〃y应先声明后使用,并给初值 constint x=0;
cout«y«\n';
//x=5; x为const,去掉该句
int* p;
p=&y;
print(p);
// return 0; main返回为void ,去掉该句 }
四、写出下面程序的执行结果:(15分)
1)
1120,120
1180
2)
(Number of objects created is = 1
(Number of objects created is = 4 being destroyed being destroyed being destroyed being destroyed
3)XY
五、程序填空:(10分)
(1) protected:或 public (2) const char *n (3) strcpy(name,n);
(4): public A 或:protected A (5) :A(n)
五、单项选择题(共20题,每题1分,共20分)
1、 下列关于C++标识符的命名不合法的是
A.Pad B. name_l C. A#bc D. _al2
2、 若有以下类型标识符定义:()
int x=2; char w二'a'; float y=23. 45f; double z二45. 6712; 则表达式w*x+y-z的结果类型是
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论