Impl.h 实现类的头/实现文件,可以看到里面实现了方法operator()
class
Impl
{
public:
void operator()(int nData)
{
}
} ;
{
public:
void operator()(int nData)
{
}
} ;
A.h 接口类头文件,不须要包含实现类的头文件
class A
{
public:
A();
~A();
void operator()(int nData);
private:
Impl * impl;
};
A.cpp 接口类的实现,需要包含实现类的头文件
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;
} ;
class A
{
public:
A();
~A();
void operator()(int nData);
private:
Impl * impl;
};
#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 " Impl.h "
A::A()
{
impl = new Impl;
}
A:: ~ A()
{
delete impl;
}
void A:: operator ()( int nData)
{
(*impl)(nData);
}
#include
"
A.h
"
void main()
{
A a;
a(0);
}
void main()
{
A a;
a(0);
}