若有如下类定义:class B {void fun(){}protected:double varl;public:void fun2(){}};class D:public B{protected:void fun3(){}};已知obj是类D的对象,下列语句中不违反成员访问控制的权限的是()。
A. obj.fun1();
B. obj.var1;
C. obj.fun2();
D. obj.fun3();
查看答案
有如下定义:class BASE{public: void fun1(){}private: void fun2(){}protected: void fun3(){}};class DERIVED :protected BASE {public: void fun4(){}};若obj是类DERIVED的对象,则下列语句中不违反访问控制权限的是()。
A. obj.fun1();
B. obj.fun2();
C. obj.fun3();
D. obj.fun4();
有如下程序:#includeusing namespace std;class C1{public:~C1(){ cout<<1; }};class C2: public c1{public:~C2(){ cout<<2; }};int main(){C2 cb2;C1 *cb1;return 0;}运行时的输出结果是()。
A. 121
B. 21
C. 211
D. 12
有如下程序:#include using namespace std;class Part{public:Part(int x=0):val(x){cout<
A. 123321
B. 213312
C. 21312
D. 12321
虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:#includeusing namespace std;class Base{public:virtual void f(){cout<<"f0+";}void g() {cout<<"g0+";}};class Derived:public Base{public:void f() {cout<<"f+";}void g() {cout<<"g+";}};int main(){Derived d;Base*p=&d;p->f(); p->g();return 0;}运行时输出的结果是()。
A. f+g+
B. f0+g+
C. f+g0+
D. f0+g0+