zoukankan      html  css  js  c++  java
  • 程序员和黑客

    题目:

    设有如下C++类

    class A
    {
    int value;
    public:
        A( int n = 0 ) : value( n ) {}
    int GetValue()
        {
    return value;
        }
    };

    请使用某种方式来在类的外部改变私有成员A::value的值。

    程序员的可能做法:

    class A
    {
    int value;
    public:
        A( int n = 0 ) : value( n ) {}
    int GetValue()
        {
    return value;
        }
    void SetValue( int n )
        {
            value = n;
        }
    };
    void f()
    {
        A a;
        a.SetValue( 5 );
    }

    黑客的可能做法:

    void f()
    {
        A a;
        *( (int *)&a ) = 5;
    }

    结论:

    程序员习惯于遵循既有的限制来增加既有的东西。

    黑客习惯于利用既有的东西来打破既有的限制。

  • 相关阅读:
    数据库范式
    服务器防火墙
    Java垃圾回收(GC)机制详解
    Java内存模型
    类加载器
    Java类加载机制
    java虚拟机:Java内存区域及对象
    初识HashMap
    初识LinkedList
    java ArrayList
  • 原文地址:https://www.cnblogs.com/flying_bat/p/951863.html
Copyright © 2011-2022 走看看