//ABase类 - 基类
class ABase
{
public:
ABase();
void GetABaseName(){std::cout << "this is ABase" << std::endl;}
};
//AFunc类 - 子类
#ifndef AFUNC_H
#define AFUNC_H
#include "abase.h"
#include "cfunc.h"
class AFunc : public ABase
{
public:
AFunc();
void GetAFuncName(){std::cout << "this is AFunc" << std::endl;}
private:
CFunc iCFunc;//实例化CFunc类
};
#endif // AFUNC_H
#include "afunc.h"
AFunc::AFunc()
{
iCFunc.SetParent(this);//通过this将AFunc ABase传入指针
}
//BFunc类 - 调用A类的类
#ifndef BFUNC_H
#define BFUNC_H
#include <iostream>
#include "afunc.h"
#include "bbase.h"
#include "cfunc.h"
class BFunc
{
public:
BFunc();
~BFunc();
void Test();//测试函数
private:
CFunc *m_pCFunc;//创建中间类
};
#endif // BFUNC_H
#include "bfunc.h"
BFunc::BFunc()
{
m_pCFunc = new CFunc;
}
BFunc::~BFunc()
{
delete m_pCFunc;
m_pCFunc = NULL;
}
void BFunc::Test()
{
//这里的强制转换很有意思,可以指向不同的类(继承和基类)
((ABase*)(m_pCFunc->GetParent()))->GetABaseName();//通过中间类访问ABase
((AFunc*)(m_pCFunc->GetParent()))->GetAFuncName();//通过中间类访问AFunc
}
//CFunc - 中间类
#ifndef CFUNC_H
#define CFUNC_H
#include <iostream>
class CFunc
{
public:
CFunc();
void SetParent(void *pParent){m_pParent = pParent;}
void *GetParent(){return m_pParent;}
private:
void* m_pParent;
};
#endif // CFUNC_H
c++ 通过 this 指针获取类的使用权限
最新推荐文章于 2024-09-12 21:13:18 发布
本文详细介绍了C++中`this`指针的作用,以及如何利用`this`来管理和控制类的成员变量和成员函数的访问权限。通过对`this`的理解,开发者可以更好地实现类的封装和数据隐藏。
摘要由CSDN通过智能技术生成