当对象的引用作为参数时,可以直接打点访问该对象的私有成员(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++)的主要内容,如果未能解决你的问题,请参考以下文章

作为函数参数传递的Java对象[重复]

将“引用”作为函数参数有哪些特点?

23种设计模式(十三)——代理模式接口隔离

阿花宝宝 Java基础笔记 之 引用类型作为参数

Java参数的数据类型

Java参数的数据类型