21xrx.com
2024-09-19 09:15:58 Thursday
登录
文章检索 我的文章 写文章
C++协变:什么是协变,如何使用?
2023-07-05 11:05:40 深夜i     --     --
C++ 协变 使用

在C++中,协变是指在派生类中重载基类的虚函数并返回一个派生类指针类型的能力。简单来说,协变使得派生类可以返回其自己的指针类型,而不是基类指针类型,从而允许程序在运行时正确地确认对象的类型。

如何使用协变?

首先,需要创建一个基类,并将其中的一个成员函数声明为虚函数。接着,在派生类中重载这个虚函数,并使用关键字“override”来告诉编译器这是一种重载。

在基类中:


class Base {

public:

  virtual Base* fun()

    std::cout << "This is Base class";

    return this;

  

};

在派生类中:


class Derived : public Base {

public:

  Derived* fun() override

    std::cout << "This is Derived class";

    return this;

  

};

在这里,基类中的fun()函数的返回类型被声明为指向基类的指针类型,而派生类中的fun()函数则返回一个指向派生类的指针类型。

最后,创建一个指向派生类的对象,并调用fun()函数。程序将根据对象的实际类型来正确地确定该调用哪个函数。


Base* ptr = new Derived();

ptr->fun();

输出结果为:


This is Derived class

因此,协变使得程序能够更加灵活地实现多态性,并提高代码的易读性和可维护性。

  
  
下一篇: C++编程进阶

评论区

{{item['qq_nickname']}}
()
回复
回复