湖南农业大学自考招生网

湖南农业大学自考信息所在位置:主页 > 自考试题 >

派生类的对象可以访问的基类成员是

时间 :2019-04-16 11:45 来源 : 湖南农业大学自考招生网 作者:admin 点击:

第一部分  选择题
 
一、单项选择题
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卷”上的相应字母涂黑。错涂、多涂或未涂均无分。
1.下列不属于面向对象程序设计的特征的是
     A.抽象性               B.完整性               C.封装性               D.多态性
2.已知:int m=10; 下列表示引用的方法中正确的是
    A.int &x=m;                                   B.int &y=10;    
    C.int &z;                                            D.float &t=&m;
3.如果要对AB类中的整型静态变量c赋初值0,则书写语句正确的是
     A.int c=0;                                        B.static int c=0;
     C.int AB::c=0;                                  D.static int AB::c=0;
4.设有数组定义:char array[]=”China”; 则数组array所占的空间是
     A.5个字节             B.10个字节           C.6个字节             D.12个字节
5.可用来替换宏替换“#define E 2.718281828”的语句是
     A.Float E 2.718281828;                        B.Const 2.718281828;
     C.Const E 2.718281828;                       D.Const Float E 2.718281828;
6.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为
     A.AB operator+(AB &a, AB &b)    B.AB operator+(AB &a)湖南农业大学自考
     C.operator+(AB a)                     D.AB &operator+( )
7.设类ClassA中存在类成员static double x,则下列初始化方式正确的是
   A.ClassA::double x=25;                               B.double x=25;
   C.double ClassA::x=25;                             D.double ClassA x=25;
8.在继承中,派生类拥有的基类个数为
     A.0个                    B.1个                    C.多于1个            D.至少1个
9.运用运算符delete删除一个动态对象时
  A.系统首先为该动态对象调用构造函数,再释放其占用的内存
  B.系统首先释放该动态对象占用的内存,再为其调用构造函数
  C.系统首先为该动态对象调用析构函数,再释放其占用的内存
  D.系统首先释放动态对象占用的内存,再为其调用析构函数
10.基类中的protected成员可以通过public派生,其在派生类中的可见性为
   A.不可访问                                           B.private
   C.public                                                 D.protected
11.派生类的对象可以访问的基类成员是
     A.公有继承的基类的公有成员              
     B.公有继承的基类的保护成员              
     C.公有继承的基类的私有成员              
     D.保护继承的基类的公有成员
12.关于友元函数的说法正确的是人力资源管理
     A.友元函数可以是任何类中的一个函数
     B.如果函数在被说明为友元函数的类中定义,则它就是该类的成员函数
     C.不属于任何类的函数不可以被说明为友元函数
     D.使用友元函数的主要目的是提高程序执行效率,因为可直接调用该类私有变量。
13.一个类拥有多个构造函数,则这些构造函数间为园林
     A.重载关系            B.重复关系            C.拷贝关系            D.继承关系
14.下列关于类的权限的描述,说法错误的是
   A.类本身的成员函数只能访问自身的私有成员
     B.类的对象只能访问该类的公有成员
   C.普通函数不能直接访问类的公有成员,必须通过对象进行访问
     D.一个类可以将另一个类的对象作为成员
15.使用delete[]删除对象数组时,描述正确的是
   A.数组中各元素都调用析构函数            B.数组中各元素都调用构造函数
   C.不调用析构函数                                 D.只有首元素调用析构函数
  
第二部分  非选择题
 
二、填空题
16.假设int a=2,b=3;则表达式(++a/b) * b--的值为      。
17.面向对象程序设计有以下主要特点,即抽象、      、继承和多态。
18.运行时的多态性主要是通过      来实现。
19.在用class定义一个类时,数据成员和成员函数的默认访问权限是      。
20.用于从键盘上为变量输入值的标准输入流对象是     
21.定义一个函数模板要用到的第一个修饰符是     
22.C++中,已知char *p1=new char[10]; 则释放p1指向的内存使用语句是      。
23.      成员函数中不能直接引用类中说明的非静态成员。
24.设要把一个文件输出流对象thisFile与文件“d:\myfile\code.txt”相关联,所用的C++语句是      。
25.函数重载时,编译系统会根据形参的类型或      来区分。
 
三、程序填空题
26.下列程序的功能是:将字符数组s2中的全部字符(含’\0’)复制到字符数组s1中,不用strcpy函数。
       #include <iostream>
       using namespace std;
       void main( )
       {
              char s1[180], s2[180];
              cin>>s2;
              for (int i=0;      ; i++)             //非’\0’字符的复制
                     s1[i]=s2[i];
                   
              cout<<s1;
       }
27.下列程序的功能是求两个浮点数之差,在下面横线处填上cha函数的原型声明、调用方法。
#include <iostream>
using namespace std;
void main( )
{
float a,b;
            
a=12.5;b=6.5;
float c =       ;
    cout<<c<<endl;
}
float cha(float x,float y)
{
float w;w=x-y;return w;
}
28.在程序下划线处填上缺少的程序部分,源程序如下:
#include <iostream>
using namespace std;
template <       >
T fun(T x)
{
                  y;
    y=x*x-T(5);
           return y;
}
void main()
{
    float a=2;
    cout<<fun(a);
}
29.在下面横线处填上适当内容,完成类中成员函数的定义。
       class A
       {           ;
              int n;
       public:
              A(int nn=0):n(nn)
              {     if(n==0) 
a=0;
                            else
                                   a=new int[n];
                     }
                                      //定义析构函数,释放动态数组空间
              };
30.以下程序是定义一个累加器类sumA,对其重载运算符“+”,请填空。
class sumA
{     private: int n;
public:
sumA() {n=0;}
sumA(int i) {n=i;}
           //运算符重载函数
{     sumA t;
t.n=n+a.n;
          //函数返回
}
void disp()
{     cout<<"n="<<n<<endl;
}
};
void main()
{     sumA k1(7),k2(27),k3;
k3=k1+k2;
k1.disp(); k2.disp(); k3.disp();
}
 
四、程序分析题
31.写出下列程序的运行结果:
#include <iostream>
using namespace std;
class FunArray
{
       int *pa;   // 指向一个数组空间
       int size;   //数组元素个数
  public:
       FunArry(int a[], int thesize):pa(a), size(thesize){  }
       int Size( ) { return size; }
       int& operator[ ] (int index) {return pa[index-1]; }
};
void main( )
{
       int s[]={1,3,5,7,9};
       FunArray ma(s, sizeof(s)/sizeof(int));
       ma[3]=11;
       for (int i=1; i<=ma.Size( ); i++) cout<<ma[i]<<’,’;
}
 
32.写出下列程序的运行结果:
#include <iostream>
using namespace std;
       class A
       {
         public:
              A( ) {cout<<”A”; }
       };
       class B
       {
         public:
              B( ) {cout<<”B”; }
       };
       class C : public A
       {     B b;
         public:
              C( ) {cout<<”C”; }
       };
       void main( )
       {     C obj;
       }
 
33.写出下列程序的运行结果:
#include <iostream>
using namespace std;
class MyClass
       {
         public:
              int number;
              void set(int i);
       };
       int number=3;
       void MyClass::set (int i)
       {     number=i;
       }
       void main( )
       {     MyClass my1;
              int number=10;
              my1.set(5);
              cout<<my1.number<<endl;
              my1.set(number);
              cout<<my1.number<<endl;
              my1.set(::number);
              cout<<my1.number<<endl;
       }
 
五、编程题
34.编程实现:输入一个 n*n 的矩阵,求出两条对角线元素值之和。
 
35.定义一个Point类,派生出矩形Rectangle类,并增加一函数Area()计算矩形的面积。不要求定义测试类。
 


TAG标签