c++访问私有(private)成员变量的常用方法

原文地址:https://blog.csdn.net/lsh_2013/article/details/45485409
类的对象不能直接访问类声明的私有成员变量,否则破坏了信息隐藏的目的。

在C++中,为了防止某些数据成员或成员函数从外部被直接访问,可以将它们声明为private,这样编译器会阻止任何来自外部非友元的直接访问。

私有成员变量的常用访问方法如下:

(1)通过公共函数为私有成员赋值

#include <iostream>  
using namespace std;  
 
class Test  
{  
private:  
	int x, y;  
public:  
	void setX(int a)  
	{  
		x=a;  
	}  
	void setY(int b)  
	{  
		y=b;  
	}  
	void print(void)  
	{  
		cout<<"x="<<x<<'\t'<<"y="<<y<<endl;  
	}  
} ; 
 
int main()  
{  
	Test p1;  
	p1.setX(1);  
	p1.setY(9);  
	p1.print( );  
	return 0;  
}  

(2)利用指针访问私有数据成员

#include <iostream>  
using namespace std;  
class Test  
{  
private:  
	int x,y;  
public:  
	void setX(int a)  
	{  
		x=a;  
	}  
	void setY(int b)  
	{  
		y=b;  
	}  
	void getXY(int *px, int *py)  
	{  
		*px=x;    //提取x,y值  
		*py=y;  
	}  
};  
int main()  
{  
	Test p1;  
	p1.setX(1);  
	p1.setY(9);  
	int a,b;  
	p1.getXY(&a,&b);  //将 a=x, b=y  
	cout<<a<<'\t'<<b<<endl;  
	return 0;  
}  

(3)利用函数访问私有数据成员

#include <iostream>  
using namespace std;  
class Test  
{  
private:  
	int x,y;  
public:  
	void setX(int a)  
	{  
		x=a;  
	}  
	void setY(int b)  
	{  
		y=b;  
	}  
	int getX(void)  
	{  
		return x;   //返回x值  
	}  
	int getY(void)  
	{  
		return y;   //返回y值  
	}  
};  
int main()  
{  
	Test p1;  
	p1.setX(1);  
	p1.setY(9);  
	int a,b;  
	a=p1.getX( );  
	b=p1.getY();  
	cout<<a<<'\t'<<b<<endl;  
	return 0;  
}     

(4)利用引用访问私有数据成员

 #include <iostream>  
    using namespace std;  
    class Test  
    {  
    private:  
    	int x,y;  
    public:  
    	void setX(int a)  
    	{  
    		x=a;  
    	}  
    	void setY(int b)  
    	{  
    		y=b;  
    	}  
    	void getXY(int &px, int &py) //引用  
    	{  
    		px=x;    //提取x,y值  
    		py=y;  
    	}  
    };  
    int main()  
    {  
    	Test p1,p2;  
    	p1.setX(1);  
    	p1.setY(9);  
    	int a,b;  
    	p1.getXY(a, b); //将 a=x, b=y  
    	cout<<a<<'\t'<<b<<endl;  
    	return 0;  
    }  
  • 31
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 您好,私有成员private member)是指在中被声明为私有private访问权限的成员,只能在的内部访问,外部无法访问。 如果您无法访问一个中声明的私有成员,可能是因为您正在尝试从的外部访问成员。在大多数编程语言中,私有成员只能在的内部访问,如果您需要从的外部访问私有成员,可以提供公共接口(public interface)来访问成员,例如公共成员函数(public member function)或友元函数(friend function)。 希望这能解答您的问题! ### 回答2: c2248因为无法访问private成员通常是因为访问权限控制的原因,private成员是一个私有成员,只有该成员函数和友元才能访问,其他的程序不能访问。如果c2248无法访问private成员,那么就可能是以下的原因: 1. 没有使用正确的访问方式 在使用private成员时,必须使用正确的方式来访问,否则会出现访问权限不足的错误。例如,在定义了一个私有成员函数时,如果在的外部直接调用该函数而不是通过该的公有成员函数来调用,也会出现c2248无法访问private成员的错误。 2. 没有声明该的友元 friend关键字可以用来声明一个函数或为该的友元,从而可以访问private成员。如果没有声明该的友元,那么外部程序就不能访问private成员,也就会出现c2248无法访问private成员的错误。 3. 使用了非法访问方式 有些程序员可能会试图通过某种非法的方式来访问一个private成员,例如在该之外定义一个同名的函数或者变量,或者使用某个黑客技巧来绕过权限限制。这种非法访问方式会被编译器拒绝,并提示c2248无法访问private成员的错误。 总之,c2248无法访问private成员通常是因为访问权限的限制。如果你想要访问一个private成员,就必须使用正确的访问方式,并声明该的友元。同时,也要警惕那些试图使用非法访问方式来获取private成员的程序,以免造成安全隐患。 ### 回答3: c2248是C++编译器常见的错误代码,它表明程序中的某个部分尝试访问一个私有成员。一个私有成员只能在的内部访问,无法从外部对象或函数访问。 通常情况下,程序员尝试直接访问一个私有成员,或将私有成员传递到另一个函数或对象中,这通常会导致c2248错误的出现。可以通过在的公有接口中定义公有成员函数来解决这个问题,这一点可以通过在的定义中增加public关键字来实现。 另一种解决方法是将相应的成员函数或变量更改为protected或公有。protected成员允许的派生进行访问,而公有成员则可以在的外部进行访问。 在解决c2248错误时,开发者还需要仔细检查程序中所引用的对象,以确保它们具有访问相应成员的权限。如果程序中使用了的指针,必须先初始化指针并在指针上调用成员函数,才能访问私有成员。 总之,c2248错误提示程序尝试访问私有成员,只能通过公有接口进行访问。所以,解决方法包括更改私有成员访问级别、定义公有成员函数或更改的派生关系等。需谨慎操作,确保修改不会影响程序的正确性和可靠性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值