内部类

#include<iostream>
using namespace std;

class Outer
{
	public:
		//如果此时Inner被private修饰,则下面Outer::Inner in 就不能创建出对象来
		class Inner
		{
			public:
				void setOuter(Outer &o)
				{
					o.m_outer=10;
				}
				void out()
				{
					cout<<"innerVal:"<<m_inner<<endl;
				}
			private:
				int m_inner;
		}m_InnerObject;  //如果Inner被private修饰,只能声明时就创建出对象,

		//外部类不能访问内部类私有成员
	/*	void setInner(Inner &in)
		{
			in.m_inner=100;
		}
	*/	
		void out()
		{
			cout<<"outerVal:"<<m_outer<<endl;
		}
	private:
		int m_outer;
};

//外部类不能访问内部类私有成员
//内部类可以访问外部类私有成员
//如果私有成员为静态则无限制

void main()
{
	Outer out;
	//Inner in;//error,要声明作用域 
	Outer::Inner in;
	
	//out.setInner(in);//error,外部类不能访问内部类私有成员
	in.setOuter(out);

	out.out();
	in.out();

	out.m_InnerObject.out();	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值