C++虚函数 纯虚函数 与多态的模糊解释

简介:   //虚函数是多态的关键 virtual   我们直接定义对象 来调用函数并不能实现多态性 //多态的特性是 父类的指针可以指向子类的对象 我们可以令父类的指针指向 不同的子类对象MFC类库就是多态的原理 //比如下面我们如果同时让p1 p2分别指向新开辟的 A B类的对象 那么...
 

//虚函数是多态的关键 virtual   我们直接定义对象 来调用函数并不能实现多态性
//多态的特性是 父类的指针可以指向子类的对象 我们可以令父类的指针指向 不同的子类对象MFC类库就是多态的原理
//比如下面我们如果同时让p1 p2分别指向新开辟的 A B类的对象 那么 调用print函数的时候就会出现都调用的基类的函数
//如何解决这个问题 呢? 那么就要用到虚函数了   我们解决的关键是将 基类的成员函数声明为虚函数 那么就可以实现多态

#include <iostream>
using namespace std ;
class A

public :
 virtual void print()
 {
  cout<<"this is A "<<endl;
 }
};
class  B  :public  A
{  
public :
 void print()
 {
  cout<<"this is B"<<endl;
 }
};
int main()
{
 A * p1=new A ;
 A  * p2=new B;
 p1->print() ;
 p2->print() ;
 return  0;
}

 

 

 

//多态的另一个作用就是纯虚函数 
//纯虚函数 只要一个类中有 类似 virtual  void a() =0 ;
//包含一个纯虚函数的类就叫抽象类 抽象类不能实现对象 只能作为接口使用 。和java的借口 类似
//在子类中如果想要实现对象 必须要实现 抽象类中的 纯虚函数
#include <iostream>
using namespace std ;
class  Animal
{  
public :
 virtual void Language() =0;
};
class Dog :public Animal
{  
public :
 void Language()
 {
  cout<<"wang wang.."<<endl;
 }
};
void main()
{
 Dog dog ;
    dog.Language() ;
   
   
}

 

 

目录
相关文章
|
22天前
|
C++
9. C++虚函数与多态
9. C++虚函数与多态
24 0
|
28天前
|
算法 安全 编译器
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
25 0
|
28天前
|
算法 Java 编译器
【C++ 关键字 virtual 】C++ virtual 关键字(将成员函数声明为虚函数实现多态
【C++ 关键字 virtual 】C++ virtual 关键字(将成员函数声明为虚函数实现多态
25 0
|
22天前
|
编译器 C++
C++之多态
C++之多态
|
24天前
|
存储 程序员 编译器
【C++ 模板类与虚函数】解析C++中的多态与泛型
【C++ 模板类与虚函数】解析C++中的多态与泛型
46 0
|
25天前
|
设计模式 存储 安全
【C++ 基本概念】C++编程三剑客:模板、多态与泛型编程的交织与差异
【C++ 基本概念】C++编程三剑客:模板、多态与泛型编程的交织与差异
102 0
|
25天前
|
存储 安全 算法
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
47 1
|
28天前
|
存储 算法 编译器
【C++ 模板应用】模板哪些行为属于多态哪些行为属于泛型编程?
【C++ 模板应用】模板哪些行为属于多态哪些行为属于泛型编程?
25 0
|
28天前
|
存储 安全 编译器
【C++ 多态 】深入理解C++的运行时类型信息(RTTI):dynamic_cast和typeid的应用与原理
【C++ 多态 】深入理解C++的运行时类型信息(RTTI):dynamic_cast和typeid的应用与原理
49 1
存储 编译器 Linux
18 0