权限控制

一、public和private的使用

public的意思是,这个成员哪里都可以用,不用担心被修改,所以,一旦发布成public的成员,是不能够改名字的.

private的意思是,这个成员只用于内部使用,不要在其他的地方使用.

二、大小

私有方法不允许外部访问,但是也占空间

struct Test	
	{	
	private:	
		int x;
	public:	
		int y;
	};	
	
printf("%d\n",sizeof(Test));		//大小为8

三、private访问

指针访问

		struct Test			
	{			
	private:			
		int x;		
	public:			
		int y;		
		void Init(int x,int y)		
		{		
			this->x = x;	
			this->y = y;	
		}		
	};			
								
	Test t;			
	t.Init(1,2);					
	int* p = (int*)&t;						
	int n = *p;						
	int m = *(p+1);						
	printf("%d %d\n",n,m);			

private修饰的成员与普通的成员没有区别 只是编译器会检测.(不让你直接访问)

private修饰的成员只有自己的其他成员才能访问

四、class与struct的区别:

编译器默认class中的成员为private 而struct中的成员为public

	class Base			
	{			
		int x;		
		int y;		
	};			
				
	int main(int argc, char* argv[])			
	{			
		Base base;		
				
		base.x = 10;		//编译不了
		base.y = 20;		
				
		return 0;		
	}	

五、类的继承

	class Base			
	{			
	public:			
		int x;		
		int y;		
	};			
	class Sub:Base			
	{			
	public:			
		int a;		
		int b;		
	};			
	int main(int argc, char* argv[])			
	{			
		Sub sub;		
				
		sub.x = 1;  //无法访问		
		sub.y = 2;  //无法访问		
		sub.a = 3;		
		sub.b = 4;		
				
		return 0;		
	}	

父类中的程序继承后变成private属性

如果不希望改变成员的属性:

class Base			
{			
public:			
	int x;		
	int y;		
};			

class Sub:public Base	
{	
public:	
	int a;
	int b;
};	

	int main(int argc, char* argv[])			
	{			
		Sub sub;		
				
		sub.x = 1; 		
		sub.y = 2;  

六、private是否被继承

				
	class Base			
	{			
	public:			
		Base()		
		{		
			x = 11;	
			y = 12;	
		}		
	private:			
		int x;		
		int y;		
	};			
	class Sub:Base			
	{			
	public:			
		int a;		
		int b;		
	};			
				
	int main(int argc, char* argv[])			
	{			
		Sub sub;				
		printf("%d\n",sizeof(sub));				//16    私有方法被继承过来了		
		return 0;		
	}					

七、构造函数继承

1、当你创建对象时,你不提供一个构造函数,编译器会自动跟你提供一个
2、如果子类继承父类,子类的构造函数会调用父类的构造函数

	class Base			
	{			
	public:			
		Base()		
		{		
			x = 11;	
			y = 12;	
		}		
	private:			
		int x;		
		int y;		
	};			
	class Sub:Base			
	{			
	public:			
		int a;		
		int b;		
	};			
				
	int main(int argc, char* argv[])			
	{			
		Sub sub;		
		sub.a = 1;		
		sub.b = 2;		
				
		int* p = (int*)⊂		
				
				
		printf("%d\n",sizeof(sub));		
		printf("%d\n",*(p+0));		
		printf("%d\n",*(p+1));		
		printf("%d\n",*(p+2));		
		printf("%d\n",*(p+3));		
				
		return 0;		
	}	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值