虚函数与多态性

#include<iostream.h>
class shape
{public:
  int a;
  shape(int t)
  {
      a=t;
  }
   virtual void area()
   {
      cout<<"shape\n";
  }
};
class circle: public shape
{
 public:
  void  area();
  circle(int x):shape(x){}
};
void circle::area()
{
    cout<<"\ncircle\n";
}

void f(shape &h)
{h.area();
}
void main()
{
 shape objs(1);
 f(objs);
 cout<<objs.a;
 circle objc(2);
 f(objc);
 cout<<objc.a<<endl;
}
时间: 2024-10-07 04:19:26

虚函数与多态性的相关文章

C++虚函数与多态性

多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念.多态(polymorphism),字面意思多种形状. 虚函数是在基类中被声明为virtual,并在派生类中重新定义的成员函数,可实现成员函数的动态覆盖(Override). 包含纯虚函数的类称为抽象类.由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象. C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实

c++中虚函数和多态性

1.直接看下列代码: #include <iostream> using namespace std; class base{ public: void who(){ cout<<"this is the class of base!"<<endl; } }; class derivel1:public base{ public: void who(){ //一般的重载函数 cout<<"this is the class of

C++基础知识 基类指针、虚函数、多态性、纯虚函数、虚析构

一.基类指针.派生类指针 父类指针可以new一个子类对象 二.虚函数 有没有一个解决方法,使我们只定义一个对象指针,就可以调用父类,以及各个子类的同名函数? 有解决方案,这个对象指针必须是一个父类类型,我们如果想通过一个父类指针调用父类.子类中的同名函数的话,这个函数是有要求的: 在父类中,eat函数声明之前必须要加virtual声明eat()函数为虚函数. 一旦某个函数被声明为虚函数,那么所有派生类(子类)中eat()函数都是虚函数. 为了避免你在子类中写错虚函数,在C++11中,你可以在函数

(笔试题)关于C++的虚函数和多态性

以下两段程序的输出是什么? 程序1: #include "stdio.h" class Base { public: int Bar(char x) { return (int)(x); } virtual int Bar(int x) { return (2 * x); } }; class Derived : public Base { public: int Bar(char x) { return (int)(-x); } int Bar(int x) { return (x

静态联编,动态联编,类指针之间的关系,虚函数与多态性,纯虚函数,虚析构函数

1.静态联编,是程序的匹配,连接在编译阶段实现,也称为早期匹配.重载函数使用静态联编. 2.动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编.switch语句和if语句是动态联编的例子. #include<iostream> void go(int num) { } void go(char *str) { } //class //::在一个类中 class A { public: void go(int num) { } void go(char *str) { } }; void

一个C++继承、虚函数和多态性的实例代码

#include <iostream> #include <string> using namespace std; namespace Animals { class Dog { private: string name; public: Dog(string name) : name(name) { } Dog() : name(NULL) { } virtual void bark() { cout << "Baseclass: Hi, " &

VC++ 之 多态性与虚函数

多态性是面向对象程序设计的关键技术之一.利用多态性技术,可以调用同一个函数名的函数,实现完全不同的功能.若程序设计语言不支持多态性,不能称为面向对象的语言. 在C++中有两种多态性: 编译时的多态性:通过函数的重载和运算符的重载来实现的. 运行时的多态性:在程序执行前,无法根据函数名和参数来确定该调用哪一个函数,必须在程序执行过程中,根据具体情况来动态地确定.它是通过类继承关系和虚函数来实现的,目的也是建立一种通用的程序. 虚函数的定义 ◆ 1.定义格式虚函数是一个类的成员函数,定义格式如下: 

C++如何处理内联虚函数

http://blog.csdn.net/hedylin/article/details/1775556 当一个函数是内联和虚函数时,会发生代码替换或使用虚表调用吗? 为了弄清楚内联和虚函数,让我们将它们分开来考虑.通常,一个内联函数是被展开的. class CFoo { private: int val; public: int GetVal() { return val; } int SetVal(int v) { return val=v; } }; 这里,如果使用下列代码: CFoo x

第十三章 虚函数

第十三章 虚函数 1.  指向对象的指针 常用 不常用????????? 2.  虚函数 virtual  体现虚函数的 多态性(动态联编) 存储不同对象的指针调用不同类的函数 3.  拳击游戏 4.  继承是否可以实现多态性 继承无法实现多态,要想实现多态就要在基类加virtual 5.  在编译时的静态联编 6.  在运行时的静态联编 7.  在运行时的动态联编 动态联编体现了多态性 所以一定要有virtual 而且要用指针或者别名 否则不能实现 8.  在编译时的动态联编 9.  三种调用