zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C++笔试题2(基础题)

C++基础 笔试
2023-09-14 09:12:19 时间

温馨提醒:此文续《C++笔试题1(基础题)

(112)请写出下列程序的输出内容

代码如下:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 class A
 5 {
 6 public:
 7     A() 
 8     { 
 9         cout << "A::A()" << endl; 
10     }
11     virtual ~A() 
12     {
13         cout << "A::~A()" << endl;
14     }
15     void fun1() const 
16     {
17         cout << "A::fun1()" << endl;
18     }
19     virtual void fun2() const
20     {
21         cout << "A::fun2()" << endl;
22     }
23 };
24 
25 class B : public A
26 {
27 public:
28     B() 
29     { 
30         cout << "B::B()" << endl; 
31     }
32     ~B() 
33     {
34         cout << "B::~B()" << endl;
35     }
36     void fun1() const 
37     {
38         cout << "B::fun1()" << endl;
39     }
40     void fun2() const
41     {
42         cout << "B::fun2()" << endl;
43     }
44 };
45 
46 void Test1(const A * pA)
47 {
48     pA->fun1();
49     pA->fun2();
50     delete pA;
51 }
52 
53 void Test2(const B * pB)
54 {
55     pB->fun1();
56     pB->fun2();
57     delete pB;
58 }
59 
60 void main()
61 {
62     cout << "=====Test1====" << endl;
63     Test1(new B());
64     cout << "====Test2====" << endl;
65     Test2(new B());
66     system("pause");
67 }
68 
69 // run out:
70 /*
71 =====Test1====
72 A::A()
73 B::B()
74 A::fun1()
75 B::fun2()
76 B::~B()
77 A::~A()
78 ====Test2====
79 A::A()
80 B::B()
81 B::fun1()
82 B::fun2()
83 B::~B()
84 A::~A()
85 请按任意键继续. . .
86 */

输出内容如上注释。

至于结果为什么是这样的,请参见《C++笔试题1(基础题)》中第(6)条及第(74)条。

或参见随笔《重载、覆盖、隐藏》理论点。

(113)请写出下列程序的输出内容

代码如下:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void main()
 5 {
 6     for (int i = 10; --i >= 0; i = i>>1)
 7     {
 8         cout << (i + 1) << endl;
 9     }
10 
11     system("pause");
12 }
13 
14 // run out:
15 /*
16 10
17 4
18 1
19 请按任意键继续. . .
20 */

输出内容如上注释。

 (114)多态类中的虚函数表是Compile-Time还是Run-Time时建立的?

虚函数表是在编译期建立,编译期各个虚函数被组织成了一个虚函数入口地址的数组。

一个对象的隐藏成员--虚函数表指针是在运行期--即构造函数被调用时进行初始化的,这也正是实现多态的关键。

(115)C++模板与泛型编程的区别是什么?

泛型编程就是以独立于任何特定类型的方式编写代码,而模板是泛型编程的基础。

模板是泛型编程所使用的方法,泛型是对模板的推广。

(116)面向对象编程所依赖的多态性称为运行时多态性;

泛型编程所依赖的多态性称为编译时多态性或参数式多态性。

(117)待续......

 

Good Good Study, Day Day Up.

顺序 选择 循环 总结