C++:接口担任(interface) 和 实现担任(implementation) 详解
当前位置:以往代写 > C/C++ 教程 >C++:接口担任(interface) 和 实现担任(implementation) 详解
2019-06-13

C++:接口担任(interface) 和 实现担任(implementation) 详解

C++:接口担任(interface) 和 实现担任(implementation) 详解

担任接口和实现, 主要包括三种方法:

1. 只担任接口, 纯虚函数;

2. 担任接口和实现, 答允覆写(override), 虚函数;

3. 担任接口和实现, 不答允覆写(override), 非虚函数;

1. 纯虚函数:

只担任接口, 可是派生类必需实现其接口;

纯虚函数也可以包括实现, 可是只能在指明类(即, class::)的时候利用

2. 虚函数:

担任接口和实现, 派生类可以覆写(override), 也可以利用默认版本, 即基函数(base)版本;

纯虚函数约束措施更多, 虚函数更机动;

3. 非虚函数

担任接口和实现, 强制的提供派生类的实现, 不行以改变, 即不行以覆写(override);

关于派生类利用纯虚函数的实现, 如下:

/************************************************* 
File: pure_virtual.cpp 
Copyright: C.L.Wang 
Author: C.L.Wang 
Date: 2014-04-01 
Description: explicit 
Email: [email protected] 
**************************************************/
      
/*eclipse cdt, gcc 4.8.1*/
      
#include <iostream>  
      
using namespace std;  
      
class Shape {  
public:  
    virtual void draw() const;  
    virtual void error (const std::string& msg) {std::cout << msg << std::endl;};  
    int objectID() const { return 1;};  
};  
      
void Shape::draw() const {  
    std::cout << "Shape Draw!" << std::endl;  
}  
      
class Rectangle: public Shape {  
public:  
    void draw() const {std::cout << "Rect Draw!" << std::endl;};  
};  
class Ellipse: public Shape {  
public:  
    void draw() const {std::cout << "Elli Draw!" << std::endl;};  
};  
      
int main () {  
    Shape* ps1 = new Rectangle;  
    Shape* ps2 = new Ellipse;  
    ps1->draw();  
    ps2->draw();  
    std::cout << "Attention: " << std::endl;  
    ps1->Shape::draw();  
    ps2->Shape::draw();  
    return 0;  
}

输出:

Rect Draw!  
Elli Draw!  
Attention:   
Shape Draw!  
Shape Draw!

作者:csdn博客 Spike_King

    关键字:

在线提交作业