众所周知,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中变量的三种方法的更多相关文章

  1. 转载:WinForm中播放声音的三种方法

    转载:WinForm中播放声音的三种方法 金刚 winForm 播放声音 本文是转载的文章.原文出处:http://blog.csdn.net/jijunwu/article/details/4753 ...

  2. MATLAB中多行注释的三种方法

    MATLAB中多行注释的三种方法 A. %{ 若干语句 %} B. 多行注释: 选中要注释的若干语句, 编辑器菜单Text->Comment, 或者快捷键Ctrl+R 取消注释: 选中要取消注释 ...

  3. 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...

  4. jsp值传到后台Struts2中的action三种方法

    Action接收表单传递过来的参数有3种方法: 如,登陆表单login.jsp: <form action="login" method="post" n ...

  5. linux修改环境变量的三种方法【转】

    [环境变量配置的三个方法] 如想将一个路径加入到$PATH中,可以像下面这样做:  1. 控制台中,不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时 ...

  6. JavaScript 复制变量的三种方法

    参考:Copying Objects in JavaScript - Orinami Olatunji(@orinamio_) October 23, 2017    直接将一个变量赋给另一个变量时, ...

  7. 交换两个变量的值,不借助第三个变量的 三种方法(JS实现)

    第一种:算术运算法 var a = 10; var b = 12; a = b - a; b = b - a; a = b + a; 它的原理是:把a.b看做数轴上的点,围绕两点间的距离来进行计算.具 ...

  8. SpringBoot学习笔记(5)----SpringBoot中异常处理的三种方法

    对于异常的处理,Spring Boot中提供默认的一个异常处理界面,如下图: 但是在实际的运用开发中,这样的页面显然是不友好的,Spring Boot也提供了自定义异常处理的方式,如下总结三种一场处理 ...

  9. Selenium获取input输入框中值的三种方法

    第一种用jQuery的val方法: js = "return $('input').val();" driver.execute_script(js) 第二种用jQuery的att ...

随机推荐

  1. 查询全国的省市信息<option>拼接

    //修改页面获取省市信息 function getProvinceUSER_AREA1(){ $.ajax({ type:'post', url:'<%=path%>/user/findU ...

  2. JPA 系列教程13-复合主键-@EmbeddedId+@Embeddable

    复合主键 指多个主键联合形成一个主键组合 需求产生 比如航线一般是由出发地及目的地确定,如果要确定唯一的航线就可以用出发地和目的地一起来表示 ddl语句 同复合主键-2个@Id和复合主键-2个@Id+ ...

  3. 配置elasticsearch 以及ik分词

    https://github.com/medcl/elasticsearch-analysis-ikhttps://www.elastic.co/downloads/past-releases/ela ...

  4. 用开源软件建垂直搜索引擎 转载 http://news.cnblogs.com/n/60041/

    用Solr.Nutch等开源软件来构建电子元器件垂直搜索引擎涉及很多实现细节,本文结合实际应用系统对数据采集.中文搜索.结果输出.分页处理.整合数据库等重点问题提出了切实可行的解决方法. 用开源软件建 ...

  5. aspx中如何加入javascript

    Response.Write("<script>window.location ='aaa.aspx';</script>"); Response.Writ ...

  6. 《JS权威指南学习总结--4.9.3in和instanceof运算符》

    内容要点: 一.in运算符 in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象.如果右侧的对象拥有一个名为左操作数数值的属性名,那么表达式返回true. 例如: va ...

  7. 更改web project 访问项目名称

    1.新建web project 2.右键该项目名称------properties 3.访问该项目的URL http://localhost:8806/ssm/.......... 相比书写整个项目名 ...

  8. 使用express创建web服务器

    使用express创建web服务器 laiqun@msn.cn Contents 1. 简单的express服务器 2. 静态文件服务 3. 路由 4. 中间件 1. 简单的express服务器 安装 ...

  9. spring 基于XML和注解的两种事务配置方式

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  10. mongodb分片

    在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而mongodb主打的就是海量数据架构,他不能解决海量数据怎么行!不行!“分片”就用这个来 ...