Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Breaking encapsulation in C++

Tags:

c++

Is there any way to break a class enacapsulation? A friend keyword can be used for the same. If i use a friend function or class, then I can access all public and private data members of it. I want to know is there any other way for the same.This is one of my interview question, I have googled much, but not found convincing answers, hope someone could help me. Thanks in advance.

like image 255
Mahesh Avatar asked Oct 14 '25 18:10

Mahesh


1 Answers

I would say that friend does not break encapsulation. See https://isocpp.org/wiki/faq/Friends#friends-and-encap

Now let's ignore the issue of what "encapsulation" actually means. It is generally possible to access private members using a template specialization hack. The basic idea, for when the class has a member template, is explained in http://www.gotw.ca/gotw/076.htm.

This approach can be extended to access any private data member or private member function of a class, even if the class contains no templates. See http://bloglitb.blogspot.com/2010/07/access-to-private-members-thats-easy.html and http://bloglitb.blogspot.com/2011/12/access-to-private-members-safer.html.

like image 154
Brian Bi Avatar answered Oct 17 '25 09:10

Brian Bi



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!