가능한 중복 : C++ 클래스의
With a private modifier, why can the member in other objects be accessed directly?개인 변수는 같은 유형의 다른 객체에서 액세스 할 수 있습니까?
개인 회원이 다른 클래스 인스턴스에 보이지 않는 수 있도록 설계되어있다. 개인 회원 은 아래와 같이 액세스 할 수 있기 때문에 혼란 스럽습니다! 아무도 나에게 그것을 설명 할 수 있습니까? 적어도 C에서 모든 클래스 인스턴스를 통해 자사의 개인 속성에 액세스 할 수있는 클래스 ++의
#include <iostream>
using namespace std;
class Person
{
private:
char* name;
int age;
public:
Person(char* nameTemp, int ageTemp)
{
name = new char[strlen(nameTemp) + 1];
strcpy(name, nameTemp);
age = ageTemp;
}
~Person()
{
if(name != NULL)
delete[] name;
name = NULL;
}
bool Compare(Person& p)
{
//p can access the private param: p
//this is where confused me
if(this->age < p.age) return false;
return true;
}
};
int main()
{
Person p("Hello, world!", 23);
return 0;
}
아닌 개체 별 하나. – chris
주요 기능에서 p.age에 액세스 해보십시오. 즉, 클래스 밖에서 액세스하는 것이 방지됩니다. – PeterJ
std :: string을 사용하여 문자열을 보관합니다. 현재 당신이 3 가지 규칙을 따르지 않고 있기 때문에 (이것은 문제입니다). –