virtual与override的使用

本文探讨了C++中virtual关键字和override关键字在函数声明中的差异。virtual函数确保在运行时根据对象的实际类型调用适当的函数,而override则用于在子类中明确指定重写父类的虚函数。如果没有override,即使父类函数是virtual的,子类的未声明重写函数也不会被调用,导致调用父类的实现。理解这一动态绑定机制对于正确实现依赖注入和IoC设计模式至关重要。
摘要由CSDN通过智能技术生成

原文:https://www.cnblogs.com/yanyao/p/4830768.html

在函数的声明中,当有“virtual”修饰的时候,和没有virtual有什么区别呢?最重要的一点就是调用实例的函数是在编译的时候确定还是在运行的时候确定,virtual函数是在运行的时候来确定具体调用哪个类。这个特性是和父子类继承息息相关的。

 

这儿有个例子,在网上很多地方被转载,我稍微扩展了一下:

 

using System;  
namespace Smz.Test  
{  
    class A  
    {  
        public virtual void Func() // 注意virtual,表明这是一个虚拟函数  
        {  
            Console.WriteLine("Func In A");  
        }  
  
        public void Non_virtual()  
        {  
            Console.WriteLine("Non virtual func in A");  
        }  
    }  
    class B : A // 注意B是从A类继承,所以A是父类,B是子类  
    {  
        public override void Func() // 注意override ,表明重新实现了虚函数  
        {  
            Console.WriteLine("Func In B");  
        }  
  
        public void Non_virtual()  
        {  
            Console.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值