首页 > 代码库 > 强制性输出private中变量的三种方法
强制性输出private中变量的三种方法
众所周知,private里面的变量不可以输出,但是也可以通过特殊途径获得。
1.通过指针暴力内存,把它索罗出来,方法:调试,破掉语法。
并且还可以对类对象进行修改。
1 // Thread.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <WinSock2.h> 6 #include <Windows.h> 7 8 #include <iostream> 9 using namespace std;10 class MyClass11 {12 public:13 MyClass();14 ~MyClass();15 int m_1;16 protected:17 int m_2;18 private:19 int m_3;20 };21 22 MyClass::MyClass()23 {24 m_1 = 10;25 m_2 = 20;26 m_3 = 20;27 }28 29 MyClass::~MyClass()30 {31 }32 int main()33 {34 MyClass Object; 35 36 printf("%d\r\n", *((int*)(&Object) + 1));37 return 0;38 }
2.在类中提供函数,但丧失了读的属性。
// Thread.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <WinSock2.h>#include <Windows.h>#include <iostream>using namespace std;class MyClass{public: MyClass(); ~MyClass(); int m_1; int Getm_3() { return m_3; }protected: int m_2;private: int m_3;};MyClass::MyClass(){ m_1 = 10; m_2 = 20; m_3 = 20;}MyClass::~MyClass(){}int main(){ MyClass Object; printf("%d\r\n", Object.Getm_3()); //必须提供接口,并且只能读,不能修改。 return 0;}
3.王道:启动线程与类结合。线程可以破除class的私有属性。
1 // Thread.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <WinSock2.h> 6 #include <Windows.h> 7 8 #include <iostream> 9 using namespace std;10 //类与线程,线程可以访问非全局变量,尤其是私有指针11 12 class MyClass13 {14 public:15 MyClass();16 ~MyClass();17 int m_1;18 protected:19 int m_2;20 private:21 int m_3;22 public:23 static DWORD WINAPI ThreadProc(LPVOID Param); //线程不能所属一个类里,所以必须加关键字,static24 VOID Sub_1()25 {26 HANDLE ThreadHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, this, 0, NULL);27 WaitForSingleObject(ThreadHandle, INFINITE);28 }29 };30 31 MyClass::MyClass()32 {33 m_1 = 10;34 m_2 = 20;35 m_3 = 20;36 }37 38 MyClass::~MyClass()39 {40 }41 42 DWORD WINAPI ThreadProc(LPVOID Param);43 int main()44 {45 MyClass Object;46 Object.Sub_1();47 return 0;48 }49 50 DWORD WINAPI MyClass::ThreadProc(LPVOID Param)51 {52 printf("%d\r\n", ((MyClass*)(Param))->m_3);53 return 0;54 }
强制性输出private中变量的三种方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。