博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对于C#中的一些点滴你真的理解了吗?
阅读量:5059 次
发布时间:2019-06-12

本文共 571 字,大约阅读时间需要 1 分钟。

  废话不多说看题目,看看我们自己真的理解了吗?

1、如下代码输出的结果是什么?

 public class A{

public virtual void Func(int  number=10)

   {

      Console.WriteLine("Class A Func:"+number);

    }

}

 public class B{

public virtual void Func(int  number=10)

   {

      Console.WriteLine("Class B Func:"+number);

    }

void  main(arg)

{

   B b=new B();

   A a=b;

   a.Func();

}

  输出的答案是:Class B Func:10 ; 你看的没错 并不是Class B Func:20;由于a是一个指向B实例的引用,因此在运行的时候会调用B::Fun。但缺省参数是在编译期决定的。在编译的时候,编译器只知道a是一个类型a的引用,具体指向什么类型在编译期是不能确定的,因此会按照A::Fun的声明把缺省参数number设为10。这一题的关键在于理解确定缺省参数的值是在编译的时候,但确定引用、的虚函数调用哪个类型的函数是在运行的时候。

转载于:https://www.cnblogs.com/kingbo/p/3749311.html

你可能感兴趣的文章
DevExpress gridview获取单元格坐标(转)
查看>>
事件冒泡
查看>>
JavaScript中常见的数组操作函数及用法
查看>>
解决vs2010调试很慢的方法
查看>>
程序员的鄙视链
查看>>
Service简介 demos
查看>>
influxdb
查看>>
#019 还未搞明白的C语言问题
查看>>
Java-面向对象篇2
查看>>
【编程练习】寻找和为定值的多个数
查看>>
Eclipse中修改Tomcat的发布路径、发布方式、启动超时等信息
查看>>
设计模式——2.简单工厂模式
查看>>
(转)详细解析Java中抽象类和接口的区别
查看>>
php js 排序
查看>>
算法训练 Anagrams问题
查看>>
java BigInteger
查看>>
hdu 4927 Java大数
查看>>
Open vSwitch安装及配置
查看>>
docker 在windows7 、8下的安装
查看>>
代码审计_urldecode二次编码绕过
查看>>