通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

C++虚函数和C#虚函数的区别

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

相关文章