C++:类成员访问限定的分类及区别;

在C++的学习过程中,我们在需要对某个数据成员进行访问限定时需要用到访问限定符,常见的访问限定符有:public,private,protected和default。

在类的定义中,若没有对数据成员进行限定符限定,其默认的访问权限为default,而public和private又有什么区别呢?
public:既可以在类内引用和修改,也能在类外引用和修改

#include<bits/stdc++.h>
using namespace std;
class Ccube{
	public:
		int a,S;
	int area(int a){
		S=a*a*a;
		cout<<"area= "<<S<<endl;
	return 0;
	}
}; 
int main(){
	Ccube S1;
	cin>>S1.a;
	S1.area(S1.a);
    S1.a=10;//改变类中a的值
    S1.area(S1.a);
}

private:类的private成员只能被该类的成员函数访问(也能被该类的友元函数访问),但不能被类外函数引用和访问,也不能修改该数据成员的值。即类内(包含友元)可以访问,类外不可访问

所以要想访问此类数据成员,我们需要在类内定义一个与类外对接数据的接口。

#include<bits/stdc++.h>
using namespace std;
class Ccube{ 
    	private:
		int a,S;
	public:
		int x;
int exchange(int x){
	a=x;
}

	int area(int a){
		S=a*a*a;
		cout<<"area= "<<S<<endl;
	return 0;
	}
}; 
int main(){
	Ccube S1;
	cin>>S1.x;
	S1.area(S1.x);
}

(但需要注意:的是在类内对数据进行赋值的时候只能用构造函数,public和private里的赋值无效,若没有用构造函数,编译器会默认执行一个空的构造函数,这个函数会给所有的数据成员赋初值为0)

protected:类的protected数据成员只能被类成员函数、子类函数及友元访问,不能被其他任何访问,本身的类对象也不行。

private和protected区别:这两种访问权限的特点是类内都可以访问,类外均不可访问(类外的友元除外);其区别在于继承时,protected权限下的数据成员可以被子类的成员函数访问,而private则是完全封闭了类外访问的所有权限。连子类也不能引用该权限下的数据成员

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值