虚函数感觉总是很神秘,在本质的原理上一直也没有弄得很透彻,今天又有一点的新的感悟,纪录下来,有时间的话可以去研究一下C++对象模型
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace CSGrammar 8 { 9 class Program10 {11 static void Main(string[] args)12 {13 new Dev();//输出:Dev14 }15 }16 17 18 //子类对象包括父类本身和子类派生两部分,此时在这两部分里的this都指向子类对象。19 class Father20 {21 public Father()22 {23 Console.WriteLine(this.GetType());//这个this是子类对象,父类的构造函数是由子类调用的24 A();//如果是虚函数当然调用的是被子类重写的25 }26 public virtual void A()27 {28 Console.WriteLine("Father");29 }30 }31 32 33 class Dev : Father34 {35 public override void A()36 {37 Console.WriteLine("Dev");38 }39 }40 }