有如下程序:#include using namespace std:class B{public:virtual void show(){cout<<'b';}};class D:public B {public:void show(){cout<<'D';}};void fun1(B*ptr){ptr->show();}void fun2(B &ref){ref.show();}void fun3(B b){b.show();}int main(){B b,*p=new D;D d;fun1(p);fun2(b);fun3(d);return 0;}程序的输出结果是()。
查看答案
有如下程序:#includeusing namespace std;class A{public:virtual void func1(){cout<<"A1";}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();delete p;return 0;}运行时的输出结果是()。
A1B2
B1A2
C. B1B2
D. A1A2
有如下程序:#include using namespace std;class Book {public:Book(char*t=" "){ strcpy(title,t);}_______________private:char title[40];};class Novel: public Book {public:Novel(char* t=" "): Book(t){ }char* Category()const { return "文学";}};int main(){Book *pb;pb=new Novel();cout<Category();delete pb;return 0;}若程序运行时输出结果是”文学”,则横线处缺失部分是()。
A. char* Category()const;
B. virtual char *Category()const=0;
C. char* Category();
D. virual char* Category()const;
下列关于运算符重载的叙述中,正确的是()。
A. 运算符重载是多态性的一种表现
B. C++中可以通过运算符重载创造新的运算符
C++中所有运算符都可以作为非成员函数重载
D. 重载运算符时可以改变其结合性
有以下程序:#include using namespace std;class Complex{public:Complex(double r =0, double i =0):re(r), im(i) { }double real() const { return re; }double imag() const { return im;}Complex operator +(Complex c) const // A{ return Complex(re+c.re, im+c.im); }// Bprivate:double re, im;};int main(){Complex a = Complex(1, 1) + Complex(5);// Ccout << a.real() << '+' << a.imag() <<'i' << endl;return 0;}程序执行后的输出结果是()。
A. 6+6i
B. 6+1i
C. 1+6i
D. 1+1i