C++虚函数和C#虚函数的区别是:C++中名列前茅次引入虚拟函数的基类时,必须在类声明中指定virtual关键字;C#若一个实例方法声明前带有virtual关键字,那么这个方法就是虚函数。
一、C++虚函数和C#虚函数的区别
C++中
名列前茅次引入虚拟函数的基类时,必须在类声明中指定virtual关键字。如果虚函数的定义放在类的外面,则不能再次指定关键字virtual。假设有下面的类层次:
class A
{
public:
virtual void foo() { cout << “A::foo() is called” << endl;}//定义一个虚函数
};
class B: public A
{
public:
//备注:只要在基类中已声明为virtual,这里即使不使用virtual关键字,默认也是虚函数
//同样,如果还有从B派生的子类,对应的成员函数也是虚函数
virtual void foo() { cout << “B::foo() is called” << endl;}
};
//那么,在使用的时候,我们可以:
A * a = new B();
a->foo();// 在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!
C#中
若一个实例方法声明前带有virtual关键字,那么这个方法就是虚函数。
虚方法前不允许有static,abstract,或override修饰符
虚方法不能是私有的,因此不能使用private修饰符
class A
{
public virtual void Sum() //虚函数
{
Console.WriteLine(“I am AClass,I am virtual sum().”);
}
}
class B : A
{
public override void Sum() //重新实现了虚函数(重写)
{
Console.WriteLine(“I am BClass,I am override sum().”);
}
}
class Program
{
static void Main(string[] args)
{
A a = new B(); //定义一个a这个A类的对象.这个A就是a的申明类,实例化a对象,B是a的实例类
a.Sum();
Console.Read();
}
}
延伸阅读:
二、C++
是一种计算机高级程序设计语言,由C语言扩展升级而产生,较早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。 C++几乎可以创建任何类型的程序:游戏、设备驱动程序、HPC、云、桌面、嵌入式和移动应用等。 甚至用于其他编程语言的库和编译器也使用C++编写。C++拥有计算机运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。