可能性の重複:C++クラスの
With a private modifier, why can the member in other objects be accessed directly?プライベート変数は、同じタイプの別のオブジェクトからアクセスできますか?
プライベートメンバは、他のクラスのインスタンスに見えないように設計されています。プライベートメンバーはのようにアクセスできますので、私は混乱しています!誰も私にそれを説明することはできますか?ここで
は私のコードです:クラスの
#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;
}
それは、クラスごとではなく、オブジェクトごとの1にあります。 – chris
あなたのメイン関数からp.ageにアクセスしてみてください。それはクラスの外部にアクセスすることを防ぎます。 – PeterJ
std :: stringを使用して文字列を保持します。現在、あなたは3つのルールに従わないので(これは問題です)。 –