当前位置:首页 » 密码管理 » c访问私有成员变量

c访问私有成员变量

发布时间: 2022-09-22 02:28:51

‘壹’ C++中访问私有成员的问题

什么是私有成员?是他私有的变量,假如说你定义个人身体的类,私有的比如是
内脏,骨头,你是怎么强制访问?把人杀了尸解吗?既然定义了私有成员,就是被隐蔽不能被其他类对象访问的。所以做不到访问私有成员。

‘贰’ c++的私有静态数组成员怎样访问

根据C++的规范,类内的私有成员变量是不允许在类外进行访问的。
通常情况下,类的成员变量建议使用protected和private进行修饰。避免外部接口直接操作成员变量。
如果外部对象想要对该变量进行读取和修改,应当显式的声明public函数接口,例如void setValue(int value);和int getValue();在函数中对私有成员进行访问。

‘叁’ 在C++中访问类的私有成员变量的方法有哪些

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

#include<iostream>
usingnamespacestd;

classTest
{
private:
intx,y;
public:
voidsetX(inta)
{
x=a;
}
voidsetY(intb)
{
y=b;
}
voidprint(void)
{
cout<<"x="<<x<<' '<<"y="<<y<<endl;
}
};

intmain()
{
Testp1;
p1.setX(1);
p1.setY(9);
p1.print();
return0;
}

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

#include<iostream>
usingnamespacestd;
classTest
{
private:
intx,y;
public:
voidsetX(inta)
{
x=a;
}
voidsetY(intb)
{
y=b;
}
voidgetXY(int*px,int*py)
{
*px=x;//提取x,y值
*py=y;
}
};
intmain()
{
Testp1;
p1.setX(1);
p1.setY(9);
inta,b;
p1.getXY(&a,&b);//将a=x,b=y
cout<<a<<' '<<b<<endl;
return0;
}

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

#include<iostream>
usingnamespacestd;
classTest
{
private:
intx,y;
public:
voidsetX(inta)
{
x=a;
}
voidsetY(intb)
{
y=b;
}
intgetX(void)
{
returnx;//返回x值
}
intgetY(void)
{
returny;//返回y值
}
};
intmain()
{
Testp1;
p1.setX(1);
p1.setY(9);
inta,b;
a=p1.getX();
b=p1.getY();
cout<<a<<' '<<b<<endl;
return0;
}

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

#include<iostream>
usingnamespacestd;
classTest
{
private:
intx,y;
public:
voidsetX(inta)
{
x=a;
}
voidsetY(intb)
{
y=b;
}
voidgetXY(int&px,int&py)//引用
{
px=x;//提取x,y值
py=y;
}
};
intmain()
{
Testp1,p2;
p1.setX(1);
p1.setY(9);
inta,b;
p1.getXY(a,b);//将a=x,b=y
cout<<a<<' '<<b<<endl;
return0;
}

‘肆’ 在C++中访问类的私有成员变量的方法有哪些

c++类中成员函数默认的权限是私有的(就是自己才能用),public注释掉后,output()方法变成私有成员。类外的其他函数都不能调用。只有该类内部的方法可以调用。
public没被注释掉的时候,output()方法是公有的,类外的函数也可以调用

‘伍’ c++类中静态成员函数怎么访问类私有变量

如果私有变量是静态的,可以直接访问,或通过类名::变量名访问;
如果私有变量是实例成员,要先创建一个类的对象,再通过对象名.变量名访问,或先new一个对象,将new的返回值赋给一个指针,通过指针名->变量名访问或通过(*指针名).变量名访问。

‘陆’ c++ 类的私有成员变量可以被访问吗

C++类体声明的私有成员仅供类体内成员访问,其它地方不可访问。

‘柒’ 如何访问类中的private成员变量

总所周知,类中的private属性的成员变量在类外是无法访问的,今天我们探讨的就是如何在类外访问private属性的成员变量。

我们先来看一个简单的例子:

class STU
{
public:
STU()
{
x = 5;
y = 10;
}
private:
int x;
int y;
};

int main()
{
STU t;
int*p = (int*)&t + 1;
return 0;
}

通过上面的代码我们可以知道,方法是把类对象的地址强制转化为int*类型,因为类对象里存储的只是成员变量,所以通过对指针的操作可以访问到private类型的成员变量。

接下来还有一个例子:

class STU
{
public:
STU()
{
c = 'f';
y = 10;
}
private:
char c;
int y;
};

int main()
{
STU t;
int*p = (int*)((char*)&t + 4);
cout << *p << endl;
return 0;
}

这段代码中最重要的就是int*p = (int*)((char*)&t + 4);
因为第一个数据是char类型的,所以要把对象的地址转化为char*型,对象中存在两种类型的数据,需要考虑内存对齐,所以当要访问下一个int型变量的时候,指针需要加4,而不是加1。最后要取到int型的变量,还是要把地址强转为int *。

热点内容
网站模板php 发布:2025-07-15 16:22:47 浏览:247
编译简谱 发布:2025-07-15 16:16:37 浏览:812
编程口是什么 发布:2025-07-15 16:11:28 浏览:496
微博如何从账号和密码登录 发布:2025-07-15 15:59:02 浏览:122
解说电影需要哪些硬件配置 发布:2025-07-15 15:56:59 浏览:379
ftp快捷键搜索文件 发布:2025-07-15 15:51:44 浏览:457
苹果账号密码忘了怎么注销 发布:2025-07-15 15:30:50 浏览:200
自动阅读挂机脚本 发布:2025-07-15 15:20:18 浏览:848
开票人的权限配置如何选择 发布:2025-07-15 14:51:22 浏览:131
怎么把服务器变成普通电脑 发布:2025-07-15 14:39:45 浏览:958