虚函数感觉总是很神秘,在本质的原理上一直也没有弄得很透彻,今天又有一点的新的感悟,纪录下来,有时间的话可以去研究一下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 Program 10 { 11 static void Main(string[] args) 12 { 13 new Dev();//输出:Dev 14 } 15 } 16 17 18 //子类对象包括父类本身和子类派生两部分,此时在这两部分里的this都指向子类对象。 19 class Father 20 { 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 : Father 34 { 35 public override void A() 36 { 37 Console.WriteLine("Dev"); 38 } 39 } 40 }