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

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

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

代码如下:

 #include <iostream>
using namespace std; class A
{
public:
A()
{
cout << "A::A()" << endl;
}
virtual ~A()
{
cout << "A::~A()" << endl;
}
void fun1() const
{
cout << "A::fun1()" << endl;
}
virtual void fun2() const
{
cout << "A::fun2()" << endl;
}
}; class B : public A
{
public:
B()
{
cout << "B::B()" << endl;
}
~B()
{
cout << "B::~B()" << endl;
}
void fun1() const
{
cout << "B::fun1()" << endl;
}
void fun2() const
{
cout << "B::fun2()" << endl;
}
}; void Test1(const A * pA)
{
pA->fun1();
pA->fun2();
delete pA;
} void Test2(const B * pB)
{
pB->fun1();
pB->fun2();
delete pB;
} void main()
{
cout << "=====Test1====" << endl;
Test1(new B());
cout << "====Test2====" << endl;
Test2(new B());
system("pause");
} // run out:
/*
=====Test1====
A::A()
B::B()
A::fun1()
B::fun2()
B::~B()
A::~A()
====Test2====
A::A()
B::B()
B::fun1()
B::fun2()
B::~B()
A::~A()
请按任意键继续. . .
*/

输出内容如上注释。

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

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

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

代码如下:

 #include <iostream>
using namespace std; void main()
{
for (int i = ; --i >= ; i = i>>)
{
cout << (i + ) << endl;
} system("pause");
} // run out:
/*
10
4
1
请按任意键继续. . .
*/

输出内容如上注释。

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

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

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

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

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

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

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

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

(117)待续......

Good Good Study, Day Day Up.

顺序 选择 循环 总结

上一篇:Mysql数据库技术


下一篇:教程:在 Visual Studio 中开始使用 Flask Web 框架