Neden aynı sınıftaki nesnelerin birbirlerinin özel verilerine erişimi var?
class TrivialClass {
public:
TrivialClass(const std::string& data) :
mData(data) {};
const std::string& getData(const TrivialClass& rhs) const {
return rhs.mData;
};
private:
std::string mData;
};
int main() {
TrivialClass a("fish");
TrivialClass b("heads");
std::cout << "b via a = " << a.getData(b) << std::endl;
return 0;
}
Bu kodlar çalışıyor. A nesnesinin özel verilere b nesnesinden erişmesi ve onu geri getirmesi tamamen mümkündür. Bu neden böyle olsun? Özel verilerin özel olduğunu düşünürdüm. (Pimpl deyimindeki kopya kurucuları anlamaya çalışarak başladım, ancak sonra bu basit durumu bile anlamadığımı keşfettim.)