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
);
}
查看全文
相关阅读:
判断一个序列是否是另一个序列的前缀
Ant-打增量包
cas-单点登录-应用说明
firebug离线安装方法-拖入法
oracle-获取数据库中所有表的注释 comments
跨浏览器的placeholder – 原生JS版
birt IE8 IE9 兼容问题
websphere部署--web应用-以自己的项目为例
JSP-页面跳转大全
Oracle中Union与Union All的区别(适用多个数据库)
原文地址:https://www.cnblogs.com/cutepig/p/1412534.html
最新文章
Codeforces Round #356 (Div. 2) C. Bear and Prime 100(转)
Codeforces Round #356 (Div. 2)B. Bear and Finding Criminals(水题)
Codeforces Round #356 (Div. 2)A. Bear and Five Cards(简单模拟)
codeforces 55D
数位DP模板
HDU 3709 Balanced Number (数位DP)
HDU 3652 B-number(数位dp)
HDU 2089 不要62(数位dp入门)
POJ 1410 Intersection(计算几何)
计算几何入门模板
热门文章
POJ 1066 Treasure Hunt(计算几何)
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
编写一个递归函数,输出vector对象的内容
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
编写一段程序,从标准输入读取string对象的序列直到连续出现两个相同的单词或者所有单词都读完为止。使用while循环一次读取一个单词,当一个单词连续出现两次是使用break语句终止循环。输出连续重复出现的单词,或者输出一个消息说明没有人任何单词是重复出现的。
Copyright © 2011-2022 走看看