设有以下定义和程序:includeclassA1{public:void show1(){ cout设有以下定义和程序: #include<iostream.h> classA1 { public: void show1() { cout<<"classA1”<<end1; } }; classA2:public A1 { public: void show2() { cout<<"classA2"<<end1; } }; class A3:protected A2 { public: voidshow3

题目
设有以下定义和程序:includeclassA1{public:void show1(){ cout<<"classA1”<

设有以下定义和程序: #include<iostream.h> classA1 { public: void show1() { cout<<"classA1”<<end1; } }; classA2:public A1 { public: void show2() { cout<<"classA2"<<end1; } }; class A3:protected A2 { public: voidshow3() { cout<<"class A1”<<end1; } }; void main() { A1obj1; A2obj2; A3obj3; } 则以下不合语法的调用语句是

A.obj1.show1();

B.obj2.show1();

C.obj3.show1();

D.obj2.show2();


相似考题
更多“设有以下定义和程序:#include<iostream.h>classA1{public:void show1(){ cout<<"classA1”<<end1; ”相关问题
  • 第1题:

    若有以下程序:include using namespace std;class A{protected: int a;public: A() {

    若有以下程序: #include <iostream> using namespace std; class A { protected: int a; public: A() { a=10; } }; class A1 : public A { public: A1() { a=a+1; } }; class A2 : public A { public: A2 () { a=a+2; } }; class B : public A1,public A2 { public: B(){} void print() { cout<<a<<end1; } }; int main ( ) { B obj; obj.print(); return 0; } 程序运行后的输出结果是( )。

    A.产生语法错误

    B.11

    C.12

    D.10


    正确答案:A
    解析:本题考核派生类的定义和使用。本程序有语法错误,这是由于类B中的print函数中的语句“coutaend1;”要输出成员a的值,从而产生了二义性。分析如下:程序中定义了类A,类A1和类A2都是在类A的基础上以公有继承方式产生的派生类,而类B是在类A1和类A2的基础上经过多重继承方式产生的派生类,所以在类B中成员a有两个拷贝,系统无法区分是从A1继承过来的a,还从A2类继承过来的a。修改方法有以下两种:①在被访问的成员加上作用域分辨符“::”。将类B中的print()函数体中语句改为:coutA1::aend1;或coutA2::aend1;但两者的输出结果不同,前者输出11,而后者输出12。②采用虚基类的方法。就是在定义A1和A2时,在派生方式前加上关键词“virtual”。

  • 第2题:

    以下程序中,错误的行为①include②class A③{④public:⑤int n=2;⑥A(int val){cout<

    以下程序中,错误的行为

    ①#include<iostream.h> ②class A ③{ ④ public: ⑤ int n=2; ⑥ A(int val){cout<<val<<end1;} ⑦ ~A(){}; ⑧}; ⑨void main() ⑩{ (11) A a(0); (12)}

    A.⑤

    B.⑥

    C.⑦

    D.(11)


    正确答案:A
    解析:C抖语言中规定在类体中不允许对所定义的数据成员进行初始化。

  • 第3题:

    设有以下定义和程序:includeclass A1{public:void show1(){cout<<"class A1"<

    设有以下定义和程序: #include<iostream.h> class A1 { public: void show1() { cout<<"class A1"<<endl; } }; class A2:public A1 { public: void show2() { cout<<"class A2"<<endl; } }; class A3:protected A2 { public: void show3() { cout<<"class A1"<<endl; } }; void main() { A1 obj1; A2 obj2; A3 obi3; } 则以下不合语法的调用语句是( )。

    A.objl.show1();

    B.obj2.show1();

    C.obj3.show1();

    D.obj2.show2();


    正确答案:C

  • 第4题:

    设有以下定义和程序:includeclass A1{public: void show1(){cout<<"class A1"<

    设有以下定义和程序:#include<iostream.h>class A1{public: void show1() { cout<<"class A1"<<endl; } };class A2 : public A1{public: void show2() { cout<<"class A2"<<end1 }};class A3 : protected A2{public: void show3() { cout<<"class A1"<<endl; }};void main(){ A1 obj1; A2 obj2; A3 obj3;} 则以下不合语法的调用语句是

    A.obj1. showl();

    B.obj2. showl();

    C.obj3. showl();

    D.obj2. show2();


    正确答案:C
    解析:本题考核派生类的使用以及访问权限问题。C++中,通过类的对象只能访问类的公有成员,不能访问类的保护成员和私有成员。A2是A1的公有派生类,A3是A2的保护派生类,所以类A1的成员函数show1()在类A3中呈现保护属性,不能通过A3类的对象访问。

  • 第5题:

    设有以下定义和程序:includeclassA1{public: void showl() { cout<<"classA1"<

    设有以下定义和程序: #include <iostream.h> class A1 { public: void showl() { cout<<"class A1"<<end1; } }; Class A2 : public A1 { public: void show2() { cout<<"Class A2"<<end1; } }; Class A3 : protected A2 { public: void show3() { cout<<”Class A土”<<end1; } }; void main() { A1 obj1; A2 obj2; A3 obj3; } 则以下不合语法的调用语句是( )。

    A.obj1.show1();

    B.obj2.show1();

    C.obj3.show1();

    D.obj2.show2();


    正确答案:C
    解析:C++中,通过类的对象只能访问类的公有成员,不能访问类的保护成员和私有成员。A2是A1的公有派生类,A3是A2的保护派生类,所以类A1的成员函数showl()在类A3中呈现保护属性,不能通过A3类的对象访问。