强制性输出private中变量的三种方法
众所周知,private里面的变量不可以输出,但是也可以通过特殊途径获得。
1.通过指针暴力内存,把它索罗出来,方法:调试,破掉语法。
并且还可以对类对象进行修改。
// Thread.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <WinSock2.h>
#include <Windows.h> #include <iostream>
using namespace std;
class MyClass
{
public:
MyClass();
~MyClass();
int m_1;
protected:
int m_2;
private:
int m_3;
}; MyClass::MyClass()
{
m_1 = ;
m_2 = ;
m_3 = ;
} MyClass::~MyClass()
{
}
int main()
{
MyClass Object; printf("%d\r\n", *((int*)(&Object) + ));
return ;
}
卷珠帘
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 = ;
m_2 = ;
m_3 = ;
} MyClass::~MyClass()
{
}
int main()
{
MyClass Object;
printf("%d\r\n", Object.Getm_3()); //必须提供接口,并且只能读,不能修改。
return ;
}
卷珠帘
3.王道:启动线程与类结合。线程可以破除class的私有属性。
// Thread.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <WinSock2.h>
#include <Windows.h> #include <iostream>
using namespace std;
//类与线程,线程可以访问非全局变量,尤其是私有指针 class MyClass
{
public:
MyClass();
~MyClass();
int m_1;
protected:
int m_2;
private:
int m_3;
public:
static DWORD WINAPI ThreadProc(LPVOID Param); //线程不能所属一个类里,所以必须加关键字,static
VOID Sub_1()
{
HANDLE ThreadHandle = CreateThread(NULL, , (LPTHREAD_START_ROUTINE)ThreadProc, this, , NULL);
WaitForSingleObject(ThreadHandle, INFINITE);
}
}; MyClass::MyClass()
{
m_1 = ;
m_2 = ;
m_3 = ;
} MyClass::~MyClass()
{
} DWORD WINAPI ThreadProc(LPVOID Param);
int main()
{
MyClass Object;
Object.Sub_1();
return ;
} DWORD WINAPI MyClass::ThreadProc(LPVOID Param)
{
printf("%d\r\n", ((MyClass*)(Param))->m_3);
return ;
}
卷珠帘
强制性输出private中变量的三种方法的更多相关文章
- 转载:WinForm中播放声音的三种方法
转载:WinForm中播放声音的三种方法 金刚 winForm 播放声音 本文是转载的文章.原文出处:http://blog.csdn.net/jijunwu/article/details/4753 ...
- MATLAB中多行注释的三种方法
MATLAB中多行注释的三种方法 A. %{ 若干语句 %} B. 多行注释: 选中要注释的若干语句, 编辑器菜单Text->Comment, 或者快捷键Ctrl+R 取消注释: 选中要取消注释 ...
- 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...
- jsp值传到后台Struts2中的action三种方法
Action接收表单传递过来的参数有3种方法: 如,登陆表单login.jsp: <form action="login" method="post" n ...
- linux修改环境变量的三种方法【转】
[环境变量配置的三个方法] 如想将一个路径加入到$PATH中,可以像下面这样做: 1. 控制台中,不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时 ...
- JavaScript 复制变量的三种方法
参考:Copying Objects in JavaScript - Orinami Olatunji(@orinamio_) October 23, 2017 直接将一个变量赋给另一个变量时, ...
- 交换两个变量的值,不借助第三个变量的 三种方法(JS实现)
第一种:算术运算法 var a = 10; var b = 12; a = b - a; b = b - a; a = b + a; 它的原理是:把a.b看做数轴上的点,围绕两点间的距离来进行计算.具 ...
- SpringBoot学习笔记(5)----SpringBoot中异常处理的三种方法
对于异常的处理,Spring Boot中提供默认的一个异常处理界面,如下图: 但是在实际的运用开发中,这样的页面显然是不友好的,Spring Boot也提供了自定义异常处理的方式,如下总结三种一场处理 ...
- Selenium获取input输入框中值的三种方法
第一种用jQuery的val方法: js = "return $('input').val();" driver.execute_script(js) 第二种用jQuery的att ...
随机推荐
- 常用的meta标签
<!-- 关键字,搜所引擎 SEO --> <meta http-equiv="keywords" content="关键字1,关键字2,...&quo ...
- APP测试--测试日报和上线报告
1 测试日报包含: 1 对当前测试版本质量进行分级 2 对较严重的问题进行举例,提示开发人员优先修改 3 对版本的整体情况进行评估 2 上线报告: 1 对当前版本质量进行分级 2 附上测试报告(功能测 ...
- JPA 系列教程11-复合主键-2个@Id
复合主键 指多个主键联合形成一个主键组合 需求产生 比如航线一般是由出发地及目的地确定,如果要确定唯一的航线就可以用出发地和目的地一起来表示 ddl语句 CREATE TABLE `t_airline ...
- [转载]Winform中Control的Invoke与BeginInvoke方法
转自http://www.cppblog.com/baby-fly/archive/2010/04/01/111245.html 一.为什么 Control类提供了 Invoke和 BeginInvo ...
- Minigui开发之遥控控制逻辑算法
引言 在开发公司的minigui产品时,需要用遥控器来切换显示屏上的图标和控件,这就涉及到一个问题,如何获得下一个选中的图标或控件呢? 解决思路 利用每个控件自身的ID号,建立一张类似矩阵的表,用坐标 ...
- 关于C/C++的四舍五入方向
今天在刷题过程中发现了一个特别奇怪的现象,printf() 的精度控制不是按照4舍5入,而是按照5舍6入, 例如: printf("%.2f\n",0.145) printf(&q ...
- jsp的九大天王
JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 1. ...
- HDU1860:统计字符
Problem Description 统计一个给定字符串中指定的字符出现的次数 Input 测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超 ...
- iOS打包app发给测试人员测试
说明:在项目开发过程中经常需要开发人员将项目打包成ipa包后,发给测试人员进行测试.本文贴图对打包的过程简单介绍. 一.Product ->archive (注意,不能是模拟器状态,如果当前调试 ...
- web项目从域名申请到发布
http://wenku.baidu.com/link?url=H-Hu2nvzFRirdxO3xzrWCWfc4WJFLyFjsxak5MFwOuzQfgTawJLXC4vAc4xYAIySxn59 ...