【问题标题】:C++ access to function argument private variable [duplicate]C ++访问函数参数私有变量[重复]
【发布时间】:2014-06-09 16:22:45
【问题描述】:
 class Container{



private:
    int num_;

public:

    Container(): num_(1)
    {};

    void add(Container other){
        num_+=other.num_;
    }

    int get_num(){
        return num_;
    }

    void set_num(int n){
        num_=n;
    }

};

在上面的例子中 other.num_ 是可访问的...为什么?不应该因为private修饰符而无法访问吗?

【问题讨论】:

  • 不,可以访问自己的私有成员。
  • 因为你是从容器类访问它
  • 因为在 C++ 中,封装是针对每个类,而不是针对每个对象。这意味着任何 Container 类型的对象都可以访问私有成员,无论它们是否在不同的对象中。

标签: c++ oop


【解决方案1】:

一个类总是可以访问它自己的成员,无论它有什么访问修饰符一个成员变量。
private:只有类可以访问
protected:只有派生类可以访问
@987654323 @:每个人都可以访问
如果你写:

class Container{
private:
    int num_;
}

每个对象都可以访问同一类的任何其他对象的私有成员,因为在c++ 中,访问修饰符是针对一个类而不是针对该类的每个对象的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 2021-06-27
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多