c++ public, protected, private成员变量,成员函数继承和访问规则实例代码

本文通过C++代码示例展示了类的public, protected, private成员变量和成员函数的继承及访问规则。Base类包含公共、受保护和私有成员,ChildOne作为Base的子类,能访问不同级别的成员。在main函数中,展示了如何从外部和内部调用这些成员。" 131784558,17051066,AR技术在移动开发中的导航与定位应用,"['移动开发', 'AR技术', '定位服务', '导航系统', '开发语言']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Base.h


#ifndef _BASE_H_
#define _BASE_H_


namespace cplusplustest{


class Base
{
public:
Base() {}
virtual ~Base() {};


public:
void publicFunc();


public:
void setPrivateMem(int i);
int getPrivateMem();


protected:
void protectedFunc();


private:
void privateFunc();


public:
int m_publicMem;


protected:
int m_protectedMem;


private:
int m_privateMem;
};


}


#endif


Base.cpp


#include "Base.h"
#include <iostream>


using namespace std;


namespace cplusplustest
{


void Base::publicFunc()
{
cout << "publicFunc in base" << endl;
}


void Base::protectedFunc()
{
cout << "protectedFunc in base" << endl;
}


void Base::privateFunc()
{
cout << "privateFunc is base" << endl;
}


void Base::setPrivateMem(int i)
{
m_privateMem = i;
}


int Base::getPrivateMem()
{
return m_privateMem;
}


}



ChildOne.h


#ifndef _CHILDONE_H_
#define _CHILDONE_H_


#include "Base.h"


namespace cplusplustest
{
class ChildOne : public Base
{
public:
ChildOne() {};
ChildOne(Base& base);
virtual ~ChildOne() {}


public:
void childOnePublicFunc();


private:
void childOnePrivateFunc();


private:
int m_childOnePrivateMem;
};


}


#endif



ChildOne.cpp


#include "ChildOne.h"
#include <iostream>


using namespace std;


namespace cplusplustest
{


ChildOne::ChildOne(Base& base)
{
base.m_publicMem = 10;
//base.m_protectedMem = 11; //ChildOne中不能访问Base的protected成员变量
//base.m_privateMem = 12;   //ChildOne中不能访问Base的private成员变量


this->m_publicMem = 100;
this->m_protectedMem = 101; //ChildOne继承了Base的protected成员变量,可以访问自己的protected成员变量
//this->m_privateMem = 102; //ChildOne没有继承Base的pritvate成员变量(或者说继承了Base的private成员变量,但是是Base private的,不能访问)


this->m_childOnePrivateMem = 1000;
}


void ChildOne::childOnePublicFunc()
{
cout << __FUNCTION__ << endl;


this->publicFunc();
this->protectedFunc();  //ChildOne 继承了Base的protected成员函数
//this->privateFunc();  //ChildOne没有继承Base的private 成员函数


cout << endl;
}


void ChildOne::childOnePrivateFunc()
{
cout << "childOnePrivateFunc in childOne" << endl;
}


}



TestMain.cpp


#include "Base.h"
#include "ChildOne.h"
#include <iostream>


using namespace std;
using namespace cplusplustest;


void main()
{
Base base;
base.publicFunc();

//base.protectedFunc(); //Base的protected 成员函数, 在类之外不可访问
//base.privateFunc();   //Base的private 成员函数, 在类之外不可访问


ChildOne childOne;
childOne.publicFunc();

//childOne.protectedFunc();  //ChildOne继承的Base的protected成员函数, 在类之外不可访问
//childOne.privateFunc();    //ChildOne不会继承Base的private成员函数,在类外更不可访问


childOne.childOnePublicFunc();
//childOne.childOnePrivateFunc(); //ChildOne的private成员函数在类之外不可访问


ChildOne childOneOther(base);


ChildOne childOneTwo;
childOneTwo.setPrivateMem(10);  // ChildOne继承了Base的private变量(可以调试看一下childOneTwo的变量栈),不能访问,只能通过Base来访问
cout << childOneTwo.getPrivateMem() << endl;


cout << "done" << endl;
system("pause");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值