【2016-10-13】【坚持学习】【Day4】【virtual 虚函数】

定义一个基类,有一个虚函数

定义三个子类,分别继承,重写,New,这个虚函数

    abstract class Test
    {
        public virtual void Prinf()
        {
            Console.WriteLine("这是虚方法");
        }
    }

    class SubClassA : Test
    {
        public override void Prinf()
        {
            Console.WriteLine("这是override的新方法");
        }
    }

    class SubClassB : Test
    {

        public new void Prinf()
        {
            Console.WriteLine("这是new的新方法");
        }
    }

    class SubClassC : Test
    {
        public new void Prinf()
        {
            Console.WriteLine("这是new的新方法");
        }
    }

运行:

 Test t1;
            SubClassB t2;
            Test t3;
            t1 = new SubClassA();
            t2 = new SubClassB();
            t3 = new SubClassC();
            t1.Prinf();
            t2.Prinf();
            t3.Prinf();

            Console.Read();

结果如下:

时间: 2024-10-12 09:03:03

【2016-10-13】【坚持学习】【Day4】【virtual 虚函数】的相关文章

C++ Primer Plus学习笔记之虚函数

C++ Primer Plus学习笔记之虚函数 C++语言的多态性有两种类型:静态多态性和动态多态性.函数重载和运算符重载就是静态多态性的具体表现,而动态多态性是指程序运行过程中才动态的确定操作所针对的对象,它是通过虚函数实现的: 1,虚函数的概念: 一个指向基类的指针可用来指向从基类派生的任何对象,这样就可以达到一个接口多个实现的访问了:虚函数是在基类中被冠以virtual的成员函数,它提供了一种接口界面.虚函数可以在一个或者多个派生类中被重新定义,但要求在派生类中从新定义时,虚函数的函数原型

C++学习笔记--从虚函数说开去

虚函数与纯虚函数: 虚函数:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,virtual  函数返回类型  函数名(参数表){函数体;} ,实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数.注意虚函数在基类中是有定义的,即便定义是空. 纯虚函数:在基类中是没有定义的,必须由派生类重定义实现,否则不能由对象进行调用. 看下面的例子: #include<iostream> using namespace std; class Cshape { p

C++学习笔记27,虚函数的工作原理

C++规定了虚函数的行为,但是将实现交给了编译器的作者. 通常,编译器处理虚函数的方法是给每一个对象添加一个隐藏成员.隐藏成员中保存了一个指向函数地址数组的指针. 这个数组称为虚函数表(virtual function table,vtbl).虚函数表中存储了为类对象进行声明的虚函数的地址. 例如:基类对象包含一个指针,该指针指向基类的虚函数表. 派生类对象包含一个指针,该指针指向一个独立的虚函数表.如果派生类提供了虚函数的新定义,虚函数表将保存新的函数地址. 如果派生类没有重新定义虚函数,虚函

C++ virtual虚函数

1 #include<iostream> 2 using namespace std; 3 class Base{ 4 public: 5 void m() 6 { 7 cout << "it's Base's m() " << endl; 8 } 9 virtual void f() 10 { 11 cout << "it's Base's f()" << endl; 12 } 13 }; 14 clas

C++学习笔记11--纯虚函数和抽象类

纯虚函数:没必要或者不应该有函数体的虚函数,用"=0;"来取代函数体.有纯虚函数的类称为抽象类(缺少函数体),不允许直接用抽象类来创建对象.抽象类总数用来作为父类,由子类来实现(覆盖)那些纯虚函数,从而可以创建子类类型的对象.子类对象可以当成父类对象的引用,或者可以用父类指针指向子类对象. ×××××使用多态时必须通过父亲指针或者引用来访问子对象,而不能重建一个父类对象×××× #include<iostream> using namespace std; #include

学习笔记---C++虚函数,纯虚函数

1 .虚函数 假设people是man的父类,people类和man类都定义了实函数walk() people* p = new man(); p->walk(); 这里P执行的是people类的walk()函数.这和java语言不一样,java在这里执行的是man的walk()函数.那么C++如何实现子类的方法重写,并动态定位到子类方法? 这里必须使用virtual关键字 定义父类和子类的walk() virtual void walk(); 现在执行 p->walk();就是执行的子类的w

C++学习笔记27,虚函数作品

C++它指定虚函数的行为,但实现的作者编译器. 通常,编译器处理虚函数的方法是给每个对象加入一个隐藏成员.隐藏成员中保存了一个指向函数地址数组的指针. 这个数组称为虚函数表(virtual function table,vtbl).虚函数表中存储了为类对象进行声明的虚函数的地址. 比如:基类对象包括一个指针,该指针指向基类的虚函数表. 派生类对象包括一个指针,该指针指向一个独立的虚函数表.假设派生类提供了虚函数的新定义,虚函数表将保存新的函数地址. 假设派生类没有又一次定义虚函数,虚函数表将保存

C++学习研究之虚函数、多态的实现原理

1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数.2. 存在虚函数的类都有一个一维的虚函数表叫做虚表.类的对象有一个指向虚表开始的虚指针.虚表是和类对应的,虚表指针是和对象对应的.3. 多态性是一个接口多种实现,是面向对象的核心.分为类的多态性和函数的多态性.4. 多态用虚函数来实现,结合动态绑定.5. 纯虚函数是虚函数再加上= 0.6. 抽象类是指包括至少一个纯虚函数的类. 纯虚函数:virtual void breathe()=0:即抽象类!必须在子类实现这个函数!

C++\virtual 虚函数、纯虚函数

前提摘要: 虚函数联系到多态,多态联系到继承.所以本文中都是在继承层次上做文章.没了继承,什么都没得谈. 虚函数定义: 指向基类的指针或引用在操作它的多态类(子类/派生类)对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数. 使用方法: 1.只需要在成员函数声明前使用关键字"virtual"将函数声明为虚函数(子类中可加可不加,没加系统会自动判定为虚函数,为了阅读性,建议加上),而函数实现不需要使用关键字"virtual". 2.非类的成员函数不能定义