- 3
- 4
- 5
- 6
1 public class Test {
2 int m, n;
3 public Test() {}
4 public Test(int a) { m=a; }
5 public static void main(String arg[]) {
6 Test t1,t2;
7 int j,k;
8 j=0; k=0;
9 t1=new Test();
10 t2=new Test(j,k);
11 }
12 }
在编译时哪行将导致一个错误? [D]
A. 第3行
B. 第5行
C. 第6行
D. 第10行
public Test(){} 代表无参数构造器 public Test(int a){m=a;} 代表只有一个参数构造器 第10行: t2=newTest(j,k); 代表使用2个参数的构造器。但Test没有定义两个参数的。所以这里错了4. 以下程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <iostream>
using
namespace
std;
int
fun (
int
x,
int
y)
{
if
(x==y)
return
(x);
else
return
((x+y)/2);
}
int
main()
{
int
a=4,b=5,c=6;
printf
(
"%d\n"
,fun(2*a,fun(b,c)));
}
|
- 8
- 6
- 12
- 3
- 4
- 1
- 2
- 3
1) public void modify() {
2) int I, j, k;
3) I=100;
4) while(I>0){
5) j= I * 2;
6) System.out.println (" The value of j is " + j );
7) k=k + 1;
8) I--;
9) }
10)}
(A) line 4 (B) line 6
(C) line 7 (D) line 8
int fun(char *x,char *y)
{ int n=0;
while((*x==*y)&&*x!='\0'){x++;y++;n++;}
return n;
}
函数的功能是 ______ 。
A. 查找x和y所指字符串中是否有'\0'
B. 统计x和y所指字符串中最前面连续相同的字符个数
C. 将y所指字符串赋给x所指存储空间
D. 统计x和y所指字符串中相同的字符个数
答案:B
解析:循环中(*x==*y)&&*x!='\0'表示的是当x和y当前所指的字符相同,这时循环体中n++。当x和y所指字符不再相同时,结束循环,返回n的值。所以这就是在统计x和y所指字符串中最前面连续相同的字符个数。因此选B。9.
有如下类定义和变量定义:
class Parents{
public:
int publicuata;
private:
int privateData;
};
class ChildA:public Parents{/*类体略*/};
class ChildB:private Parents{/*类体略*/);
ChildA a;
ChildBb;
下列语句中不正确的是
A)cout<<a.publicData <<endl ;
B)cout<<a.privateData <<endl ;
C)cout<<b.publicData <<endl ;
D)cout<<b.privateData <<endl ;
答案为BCD。
10.关于this指针正确的是?
A保证每个对象拥有自己的数据成员,但共享处理这些数据的代码
B. 保证基类私有成员在子类中可以被访问。
C. 保证基类保护成员在子类中可以被访问。
D. 保证基类公有成员在子类中可以被访问。
答案:A
解析:this指针是隐藏的,可以使用该指针来访问调用对象中的数据。基类的成员在派生 类中能否访问,与继承方式有关,与this没有关系。所以选择A项。
11.下面叙述不正确的是()
A. 派生类一般都用公有派生
B. 对基类成员的访问必须是无二义性的
C. 赋值兼容规则也适用于多重继承的组合
D. 基类的公有成员在派生类中仍然是公有的
答案:D
解析:继承方式有三种:公有、私有和保护。多继承中,多个基类具有同名成员,在它们
的子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。赋值兼容规则是指 派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。基类中的 公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。
12.定义网络服务端口的文件是哪个?
答案/etc/services
13.
答案为B。因为x为基类的私有成员。
14.
对于下列代码: C
public class Parent {
public int addValue( int a, int b) {
int s;
s = a+b;
return s;
}
}
class Child extends Parent {
}
下述哪些方法可以加入类Child?
A int addValue( int a, int b ){// do something...}
B public void addValue (int a, int b ){// do something...}
C public int addValue( int a ){// do something...}
D public int addValue( int a, int b )throws MyException {//do something...}
答案为C。A重写,不能变的更私有B.重写不合格,返回类型不一样C。重载。D.错误的,子类重写不能比父类抛出更多的异常
15.
答案B::f1 B::f1.
在这里B中的f1不是virtual,所以在这里没有形成覆盖。有覆盖才能多态。而多态只有引用和指针才可以实现。
在本题中,f1不是virtual, rb2静态类型是B ,因此调用的就是基类的f1()。无论写成rb2=d还是&rb2=d,调用的都是基类的f1(),因为没有形成覆盖和多态。
16.
答案为D和C。注意这种情况下,Date FirstDay;也可以的。
17.下列代码的输出是?
#include <iostream>
using namespace std;
class A{
public:
A(int x):a(x) {++c;a+=1;}
virtual void s() const {
cout << c << '_' << a << endl;
}
protected:
static int c;
private:
int a;
};
class B:public A {
public:
B(int x, int y):A(x),b(y) {++c; b+=10;}
virtual void s() const {
cout << c << "_" << b << endl;
}
private:
int b;
};
结果为2_12。实现了多态。用const修饰类的成员函数,可以使函数内不能对任何成员变量修改。不是成员变量可以修改。
18.
下列代码输出为A3.y=3,原因是因为 隐藏!!!!