【问题标题】:Why this class doesn't make error? [closed]为什么这个类不会出错? [关闭]
【发布时间】:2016-01-08 04:50:59
【问题描述】:

#include <iostream>
using namespace std;

Class ITEM{
private:
    int cnt;

public:
    ITEM(){}

    void func(ITEM a){
        a.cnt = 10;
    }
};

int main(){
    return 0;
}

我认为红线会出错。 因为'a.cn​​t'值是私有值。 我了解到必须在类内部修改私有值。

【问题讨论】:

  • 为什么会出现错误?类成员函数可以访问私有成员。
  • 成员函数是类内部的,对吧?
  • 出错的不是类,而是程序员。
  • 但是,ITEM a 是外部对象。那么函数'func'中不能直接访问a.cnt吗?
  • @user3504418 你可以把自己传回去,(即使它很无意义,)在编译时是不可能区分的。例如void func(ITEM&amp; a) { a.cnt = 10; } ITEM item; item.func(item);

标签: c++ class private public


【解决方案1】:
void func(A a){
    a.cnt = 10; //valid
}

注意函数在类内部,所以它成为它的成员,并且类成员函数可以访问私有成员。

请注意,它正在使用成员函数在 ITEM 类内部进行修改,这是完全有效的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多