虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数。而非函数不支持多态调用。有如下程序:#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. f+g0+
C. f0+g+
D. f0+g0+
查看答案
有如下程序#includeusing namespace std;class A{public: virtual void func1(){cout<<"Al";} void func2(){cout<<"A2";}};class B:public A{public: void func1(){cout<<"B1";} void func2(){cout<<"B2";}};int main(){ A*p=new B; p->func1(); p->func2(); return 0;}运行此程序,屏幕上将显示输出( )。
A. B1B2
B1A2
C. A1A2
D. A1B2
于运算符重载,下列表述中正确的是( )
A. 在类型转换符函数的定义中不需要声明返回类型
B. C++已有的任何运算符都可以重载
C. 运算符函数的返回类型不能声明为基本数据类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
下列有关继承和派生的叙述中,正确的是( )。
A. 如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
B. 如果一个派生类私有继承其基类,则该派生类中的成员不能访问基类的保护成员
C. 派生类的成员函数可以访问基类的所有成员
D. 基类对象可以赋值给派生类对象
有如下程序:#include using namespace std;class Complex{ double re,im; public: Complex (double r,double i):re(r),im(i) { } double real() const {return re;} double image() const { return im;} Complex& operator+=(Complex a) { re+=a.re ; im+=a.im ; return *this ; }};ostream& operator<<(ostream& s,const Complex& z){ return s<<'('<
A. (2,3)
B. (1,-2)
C. (3,1)
D. (3,5)