zoukankan
html css js c++ java
把接口和实现分开的方法
假定接口类为A,而将实现放在Impl类中,由于非指针类型成员变量必须和该成员类声明放在一起,而指针类型可以不这样做,因此
必须将Impl成员指针作为A的成员变量
,代码如下
Impl.h 实现类的头/实现文件,可以看到里面实现了方法operator()
class
Impl
{
public
:
void
operator
()(
int
nData)
{
}
}
;
A.h 接口类头文件,
不须要包含实现类的头文件
class
Impl;
class
A
{
public
:
A();
~
A();
void
operator
()(
int
nData);
private
:
Impl
*
impl;
}
;
class
Impl;
class
A
{
public
:
A();
~
A();
void
operator
()(
int
nData);
private
:
Impl
*
impl;
};
A.cpp 接口类的实现,需要包含实现类的头文件
#include
"
A.h
"
#include
"
Impl.h
"
A::A()
{
impl
=
new
Impl;
}
A::
~
A()
{
delete impl;
}
void
A::
operator
()(
int
nData)
{
(
*
impl)(nData);
}
Main.cpp 主函数,
只需要包含接口类头文件即可,完全不需要知道实现类的任何东西
#include
"
A.h
"
void
main()
{
A a;
a(
0
);
}
查看全文
相关阅读:
Ubuntu 16.04在启动和关机时不显示启动和关机画面且显示详细的命令信息,没有进度条和Logo,或者只有紫色界面,或者没有开机画面等问题解决
Ubuntu 16.04设置开机关机时显示命令详细信息不显示进度条Logo
Ubuntu中LightDM是什么(转)
Linux终止进程的工具kill/killall/pkill/xkill/skill用法区别(转)
Ubuntu 16.04安装BleachBit清理系统垃圾文件
Ubuntu 16.04禁用来宾账号(Guest User)
Java反射 : Declared的作用 ( 例如 : getMethods和getDeclaredMethods )
java isAssignableFrom instanceof 小结 专题
java.lang.IllegalArgumentException: Illegal character in query at index ...解决办法
spring boot使用AbstractXlsView导出excel
原文地址:https://www.cnblogs.com/cutepig/p/1412534.html
最新文章
NetCore平台下使用RPC框架Hprose
net框架平台下RPC框架选型
IIS下使用 HTTP/2
HTTP/2及HTTP/3特性
LSOF查看linux中文件打开情况
数据库快速迁移10亿级数据
WPS for Linux字体配置(Ubuntu 16.04)
Ubuntu安装deb时错误:“dpkg:错误:另外一个进程已经为 dpkg 状态数据库 加锁”解决
Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本
Linux中dpkg工具update-alternatives实现符号链接软件版本的切换(转)
热门文章
Ubuntu 16.04配置JDK
Ubuntu 16.04配置Java Web开发环境
Linux环境变量设置中配置文件分析(/etc/profile,~/.bashrc等)(转)
Linux环境变量设置命令export(转)
Ubuntu 16.04安装VMware-Workstation-12
Linux下安装.bundle后缀的程序
Ubuntu 16.04安装UltraCopier做为FastCopy的替代方案
Linux下C++开发教程收集
Ubuntu 16.04安装indicator-sysmonitor实现导航条显示上下行网速/CPU/内存使用率
Ubuntu 16.04安装Grub Customizer替代Startup-manager(解决找不到menu.lst,GRUB配置简单介绍)
Copyright © 2011-2022 走看看