C++虚函数和C#虚函数的区别?
一、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++拥有计算机运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

相关推荐HOT
更多>>
python正则表达式中的零宽断言
python正则表达式中的零宽断言1、概念有些元字符不匹配任何字符,只是简单的表示成功或失败,所以这些字符也叫零宽断言。2、符号举例(1)|或操作...详情>>
2023-11-14 11:35:03
python方法的绑定和未绑定
python方法的绑定和未绑定1、说明未绑定对象的方法:无self参数的方法,通过定义类调用函数,返回未绑定self的方法。绑定对象的方法:带self参...详情>>
2023-11-14 09:53:02
python海象运算符的使用
python海象运算符的使用1、在判断条件下允许操作。在一定程度上简化了代码,但降低了可读性。i=len((l:=[1,2,3]))#先对l进行赋值,在对i赋值whi...详情>>
2023-11-14 02:38:21
pythonelif语句报错是什么原因
python的else和elif语句也可以叫做子句,因为它们不能独立使用,两者都是出现在if、for、while语句内部的。else子句可以增加一种选择;而elif子...详情>>
2023-11-13 21:46:35热门推荐
技术干货






