当对象的引用作为参数时,可以直接打点访问该对象的私有成员(c++)
Posted 行码棋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当对象的引用作为参数时,可以直接打点访问该对象的私有成员(c++)相关的知识,希望对你有一定的参考价值。
当对象的引用作为参数时,可以直接打点访问该对象的私有成员
C++的限定符是限定类的,不是限定对象的,只要是类型相同就能相互访问。
两个是同类型的,可以直接访问, 但是需要指定一下是哪个对象。
访问权限(如public,private),是相对于类来说的,private访问权限是其它类不能访问,不是这个类的不同对象不能访问。
下方代码unionOfSets和intersectionOfSets中的函数方法可以直接访问私有的变量
#include<bits/stdc++.h>
using namespace std;
class IntegerSet
{
private:
bool s[101];
public:
IntegerSet()
{
for(int i=0;i<=100;i++) s[i] = false;
}
IntegerSet(int a[],int n)
{
for(int i=0;i<=100;i++) s[i] = false;
for(int i=0;i<n;i++) s[a[i]] = true;
}
IntegerSet unionOfSets(IntegerSet &a)
{
IntegerSet temp;
for(int i=0;i<=100;i++)
if(s[i]||a.s[i]) temp.s[i] = true;
return temp;
}
IntegerSet intersectionOfSets(IntegerSet &a)
{
IntegerSet temp;
for(int i=0;i<=100;i++)
if(!s[i]||!a.s[i]) temp.s[i] = false;
else temp.s[i] = true;
return temp;
}
void insertElement(int k)
{
s[k] = true;
}
void deleteElement(int k)
{
s[k] = false;
}
void printSet()
{
int f = 0;
for(int i=0;i<=100;i++)
if(s[i]) {f=1;printf("%d ",i);}
if(!f) printf("---");
printf("\\n");
}
void isEqualTo(IntegerSet &a)
{
int f = 1;
for(int i=0;i<=100;i++)
if(s[i]!=a.s[i]){f=0;break;}
if(f) printf("The two sets are the same!\\n");
else printf("The two sets are the different!\\n");
}
};
int main()
{
// IntegerSet a1,a2,a3,a4;
// int len,a[101]{};
// // print a1
// a1.printSet();
// // 12 15
// a1.insertElement(12);
// a1.insertElement(13);
// a1.insertElement(15);
// a1.deleteElement(13);
// // 15
// a2.insertElement(15);
// a2.insertElement(16);
// a2.deleteElement(16);
//
// a3 = a1.unionOfSets(a2);
// a3.printSet();
//
// a4 = a1.intersectionOfSets(a2);
// a4.printSet();
//
// a3.isEqualTo(a4);
//
// printf("Please input the length of a array and the array:\\n");
// scanf("%d",&len);
// for(int i=0;i<len;i++) scanf("%d",&a[i]);
// IntegerSet a5(a,len);
// a5.printSet();
return 0;
}
以上是关于当对象的引用作为参数时,可以直接打点访问该对象的私有成员(c++)的主要内容,如果未能解决你的问题,请参考以下文章