使用C++的接口

简介: #include "stdafx.h"using namespace std;//abstract interfacesinterface IX...{    virtual void _stdcall Fx1()=0;    virtual void _stdcall Fx2()=0;};interface IY...{    virtual void _stdcall Fy1()=0
#include  " stdafx.h "

using   namespace  std;



// abstract interfaces

interface  IX
... {
    
virtual void _stdcall Fx1()=0;
    
virtual void _stdcall Fx2()=0;
}
;


interface  IY
... {
    
virtual void _stdcall Fy1()=0;
    
virtual void _stdcall Fy2()=0;
}
;

void  trace( const   char *  pMsg) ... {cout<<pMsg<<endl;} ;
// interface implementation
class  CA: public  IX, public  IY
... {
public :
    
//implement interface IX
    virtual void _stdcall Fx1()...{cout<<"CA::Fx1"<<endl;}
    
virtual void _stdcall Fx2()...{cout<<"CA::Fx2"<<endl;}

    
//implement interface IY
    virtual void _stdcall Fy1()...{cout<<"CA::Fy1"<<endl;}
    
virtual void _stdcall Fy2()...{cout<<"CA::Fy2"<<endl;}
}
;


int  main()
... {
    trace(
"client create an instance of the component");
    CA
* pa=new CA;
    
//get an ix pointer
    IX *pix=pa;
    trace(
"client:use the IX interface");
    pix
->Fx1();
    pix
->Fx2();

    
//get an iy pointer
    trace("client use the iy interface");
    IY 
*piy=pa;
    piy
->Fy1();
    piy
->Fy2();
    system(
"pause");

}


stdafx.h

#pragma once

#include <iostream>
#include <tchar.h>
#include <objbase.h> 

 

非接口通信
不知读者是否还记得前面我们提到过:客户和组件之间只是通过接口进行通信。但程序清单中的客户却没有遵循这一规则。在那里,客户与组件间的通信是通过一个指向类 CA 的指针而不是通过指向接口的指针完成的。使用指向 CA 的指针要求客户知道类以的定义(通常是一个头文件)。在类 cA 的声明中有许多有关实现的细节。对这些实现细节的修改将使得客户必须被重新编译。但前面已经讲过,增加或减少组件的接口不应打断已有的客户。这就是我们为什么一再坚持客户和组件之间只应通过接口进行通信。记住,接口是由没有实现细节的虚纯基类实现的。

相关文章
|
1月前
|
算法 编译器 C语言
C++-带你深度理解string类的常见接口
C++-带你深度理解string类的常见接口
30 0
|
3月前
|
C++
几个实用的C++函数接口
几个实用的C++函数接口
|
6月前
|
算法 C++ iOS开发
软件开发入门教程网 Search之C++ 接口(抽象类)
软件开发入门教程网 Search之C++ 接口(抽象类)
|
5月前
|
存储 C++
C++ string模拟实现(部分接口)
C++ string模拟实现(部分接口)
31 0
|
9天前
|
缓存 编译器 API
NumPy与其他语言(如C/C++)的接口实践
【4月更文挑战第17天】本文介绍了NumPy与C/C++的接口实践,包括Python与C/C++交互基础、NumPy的C API和Cython的使用。通过案例展示了如何将C++函数与NumPy数组结合,强调了内存管理、类型匹配、错误处理和性能优化的最佳实践。掌握这些技能对于跨语言交互和集成至关重要。
|
30天前
|
监控 Linux 编译器
Linux C++ 定时器任务接口深度解析: 从理论到实践
Linux C++ 定时器任务接口深度解析: 从理论到实践
70 2
|
1月前
|
存储 移动开发 安全
【C/C++ 口语】C++ 编程常见接口发音一览(不断更新)
【C/C++ 口语】C++ 编程常见接口发音一览(不断更新)
22 0
|
设计模式 XML C++
C++组合模式探索:以统一接口管理复杂的层次结构
C++组合模式探索:以统一接口管理复杂的层次结构
34 1
|
1月前
|
C++
C++ 接口的实现,及作用通俗理解方式
C++中的接口,一般就是指抽象类,是一种用来描述类对外提供的操作、方法或功能的集合——注意,一般只是描述(声明),而不对这些方法或功能进行定义实现,通常在
31 2
|
1月前
|
缓存 网络安全 调度
C++ Qt开发:QNetworkAccessManager网络接口组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用`QNetworkAccessManager`组件实现Web网页访问。QNetworkAccessManager是Qt网络模块中的关键类,用于管理网络访问和请求。作为一个网络请求的调度中心,它为Qt应用程序提供了发送和接收各种类型的网络请求的能力,包括常见的GET、POST、PUT、DELETE等。这个模块的核心功能在于通过处理`QNetworkReply`和`QNetworkRequest`来实现
22 0
C++ Qt开发:QNetworkAccessManager网络接口组件