如何直接访问类的私有成员?
来源:互联网 发布:sql语句比较时间大小 编辑:程序博客网 时间:2024/04/27 15:22
Adobe的一道笔试题:
class mystring{public:mystring(const string &str, const int count){m_str = str;m_count = count;} private:string m_str;int m_count;};
问,如何在不修改mystring类的任何代码的情况下访问 m_str和m_count;
第一种方法:
指针法:需要了解C++对象的内存模型,计算各成员变量的偏移值
mystring str("Test", 10);string *p1=reinterpret_cast<string*>(&str);cout << *p1 << endl;int *p2=reinterpret_cast<int*>((char*)&str+sizeof(string));cout << *p2 << endl;
或者:
class mystring1{public:string m_str;int m_count;};int main(){ mystring str("Test", 10); mystring1* pstr = (mystring1*)&str; cout << pstr->m_str << endl; cout << pstr->m_count << endl;return 0;}
第二钟方法:
宏定义: #define private public ,这个比较流氓
第三种方法:
友元类或者友元函数,如果添加一个友元函数的声明都算添加了的话,这个就不算了
有关友元的总结:http://www.cnblogs.com/BeyondAnyTime/archive/2012/06/04/2535305.html
0 0
- 如何直接访问类的私有成员?
- C++类外直接访问私有成员
- 如何访问私有成员?
- 访问类的私有成员
- 访问类的私有成员
- C++在类的成员函数中,允许直接访问该类的成员对象的私有成员变量
- C++在类的成员函数中,允许直接访问该类的成员对象的私有成员变量
- 不通过类的成员函数直接访问类的私有变量
- 类的成员函数中可以直接访问本类形参的私有变量
- 基础备忘:派生类直接访问基类的私有成员
- 在重载运算符时,类的对象可以直接访问私有成员解惑
- 在重载运算符时,类的对象可以直接访问私有成员解惑
- 访问私有类成员
- 类的私有数据成员的访问
- 用#define访问类的私有成员
- 利用反射访问类的私有成员
- c#访问类的私有成员
- 指针访问类的私有成员
- 安装SQl 2008为SQL Serv…
- 在DELL PowerEdge R720上组RAID0
- 带宽和下载速度的区别
- ping命令详解
- 神奇应用IFTTT
- 如何直接访问类的私有成员?
- 新的记录果然从周一开始
- Unity3D与VS2008结合,加快Unity3D C#开发!
- 关于表单action中的"/"
- 【c++系列】使用标准库规范确保不超出数组边界
- 【Effective C++】条款5:了解C++默默编写并调用哪些函数
- PPTV创始人陶闯:互联网未来发展趋势
- 使用vector实现优先队列
- C语言学习笔记——C语言编程