I am able to access the private member variable of the class shown in below code directly using an object instance (pointer to object). As per my understanding private members should not be accessible. Can someone please help to explain the reason behind this behaviour ?
#include <iostream>
class myClass;
using myClassPtr = std::shared_ptr<myClass>;
class myClass {
public:
myClass(unsigned int val) : m_val(val) {}
~myClass() {}
static
myClassPtr create(unsigned int val) {
myClassPtr objPtr = nullptr;
objPtr = std::make_shared<myClass>(val);
if(objPtr) {
std::cout << objPtr->m_val << std::endl;
}
return objPtr;
}
private:
unsigned int m_val;
};
int main () {
myClassPtr objPtr = myClass::create(10);
return 0;
}
Output
anandkrishnr@anandkrishnr-mbp cpp % g++ static_test.cc -std=c++11 -Wall -Werror
anandkrishnr@anandkrishnr-mbp cpp % ./a.out
10