C++ 虚函数和虚继承浅析

本文针对C++里的虚函数,虚继承表现和原理进行一些简单分析,有不对的地方请指出。下面都是以VC2008编译器对这两种机制内部实现为例。

虚函数

  • 定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数[1]
  • 语法:virtual 函数返回类型 函数名(参数表) { 函数体 }
  • 用途:实现多态性,通过指向派生类的基类指针,访问派生类中同名覆盖成员函数

函数声明和定义和普通的类成员函数一样,只是在返回值之前加入了关键字“virtual”声明为虚函数。而虚函数是实现多态的重要手段,意思是只有对虚函数的调用才能动态决定调用哪一个函数,这是相对于普通成员函数而言的,普通的成员函数在编译阶段就能确定调用哪一个函数。举个栗子:

QA,从 1.0 到 4.0

迄今为止,敏捷开发方法在各个公司都有了长足的发展,曾经的测试人员慢慢的在向QA职能过渡,但依然很多人不了解QA和测试的区别是什么。

敏捷实践不断地演化过程,使项目中各个角色不断弱化,同时,对每个成员的要求也越来越高。“全功能团队”的提出,不单单是对开发的要求,对QA来说,想要在快速变革中具备竞争力,就现在所具备的技能来说,还是远远不够的。

C++ 编译器的工作过程

源码要运行,必须先转成二进制的机器码。这是编译器的任务。

比如,下面这段源码(假定文件名叫做test.c)。

#include <stdio.h>

int main(void)
{
  fputs("Hello, world!\n", stdout);
  return 0;
}

要先用编译器处理一下,才能运行。