接口c ++的好处?

use*_*998 4 c++

看看这段代码

#include<iostream>

using namespace std;

    //Shape is an Interface Class. No data and everything pure virtual
    class Shape {
    public:
      virtual void Area(int length, int breadth) = 0;
      virtual void Perimeter(int length, int breadth) = 0;
      //Note, no data
    };

    //Derived class - Inherits Shape as Public
    class Rectangle : public Shape {
    public:
      void Area(int length, int breadth);
      void Perimeter(int length, int breadth);
    private:
      int someData;
    };

    //Derived class - Inherits Shape as Public
    class Triangle : public Shape {
    public:
      void Area(int length, int breadth);
      void Perimeter(int length, int breadth);
    private:
      int someData;
    };

    int main()
    {
      Rectangle r;
      Triangle t;

      cout<<"\n\n";
      r.Area(3,4);
      r.Perimeter(3,4);

      t.Area(3,4);
      t.Perimeter(3,4);

      cout<<"\n\n";
      return 0;
    }

    void Rectangle::Area(int length, int breadth)
    {
      cout<<"\nThe Area of Rectangle for length = "<<length<<" and\
      breadth = "<<breadth<<" is "<<(length * breadth)<<endl;
    }

    void Rectangle::Perimeter(int length, int breadth)
    {
      cout<<"\nThe Perimeter of Rectangle for length = "<<length<<" and\
      breadth = "<<breadth<<" is "<<2 * (length + breadth)<<endl;
    }

    void Triangle::Area(int length, int breadth)
    {
      cout<<"\nThe Area of Triangle for length = "<<length<<" and\
      breadth = "<<breadth<<" is "<<(length * breadth)/2<<endl;
    }

    void Triangle::Perimeter(int length, int breadth)
    {
      cout<<"\nThe Perimeter of Triangle for length = "<<length<<" and\
      breadth = "<<breadth<<" is "<<(length * breadth)/3<<endl;
    }
Run Code Online (Sandbox Code Playgroud)

我在代码中使用接口,但我的问题是我应该使用它,它有什么好处,没有性能,没有真正需要它,为什么我应该使用它(接口).使用它有什么意义,请你解释一下.

谢谢你!

ybu*_*ill 5

抽象接口将接口与实现分开.就像pimpl成语一样

  • 减少编译时间,和
  • 让您在不破坏ABI的情况下更改实施.

两者都是大型项目的重要优势.