小编Dav*_*log的帖子

C++ 为什么在处理类时应该使用 get 和 set 函数

我被告知不要在类中公开我的变量。我应该总是创建一个 get 和 set 函数。例如 :

class Whatever
{

public:
  void setSentence(const std::string &str) { sentence = str; }
  void setAnInteger(const int integer) { anInteger = integer; }

  std::string getSentence() { return sentence; }
  int getAnInteger() { return anInteger; }

private:
  std::string sentence;
  int anInteger;

};
Run Code Online (Sandbox Code Playgroud)

我为什么要那么做?仅仅使用这些变量不是更方便吗?另外,这是一种很好的 C++ 编程风格吗?

c++ class

0
推荐指数
1
解决办法
1万
查看次数

C++ - 参考,参数中的指针

关于"我什么时候使用引用和什么时候指针?"有很多问题.他们让我有点困惑.我认为引用不会占用任何内存,因为它只是地址.

现在我做了一个简单的Date课程,向他们展示了代码审查社区.他们告诉我不要在以下示例中使用该引用.但为什么?
有人告诉我,它将分配指针所分配的相同内存.这与我学到的相反.

class A{
int a;
public:
   void setA(const int& b) { a = b; } /* Bad! - But why?*/
};

class B{
int b;
public:
   void setB(int c) { b = c; } /* They told me to do this */
};
Run Code Online (Sandbox Code Playgroud)

那么我什么时候在参数中使用引用或指针,何时只是一个简单的副本?在我的例子中没有引用,常量是不必要的吗?

c++ pointers arguments reference

0
推荐指数
1
解决办法
326
查看次数

为什么有人会使用缓冲区溢出?

我买了"黑客 - 剥削艺术"这本书.其中一个内容是缓冲区溢出.我想我明白他们是如何工作的,但是,我不明白为什么有人会这样做.

让我假装我有一个不安全的程序.任何黑客都可能轻易导致缓冲区溢出.所以呢?那些黑客不知道它是哪个程序,即使他们愿意,他们还能做什么?他们没有我的电脑......即使他们没有登录就无法启动该程序,对吧?

所以基本上我的问题是,在什么情况下黑客会导致缓冲区溢出?他会怎么做?通过互联网?然后什么?

我希望我能在这个问题上找到合适的位置.我真的不明白为什么这样一个不安全的程序是如此重要.

c buffer-overflow

0
推荐指数
1
解决办法
127
查看次数

exe的基地址?

    tibiaWindow = FindWindow( L"TibiaClient", NULL);

    DWORD PID;
    GetWindowThreadProcessId( tibiaWindow, &PID );

    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID); //Open Process for Read/Write
    short mana = 0;
    void* ptr = (void*)hProcess+0x3C2D00;
    if( !ReadProcessMemory(hProcess, ptr, &mana, 2, 0) ){
        return false;
    }
    else{
        statusBar()->showMessage( QString::number(mana), 3000 );
    }

    return true;
Run Code Online (Sandbox Code Playgroud)

这应该是从位于tibia.exe + 0x3CD2D00的游戏中读取法术力.但它不起作用.谁能帮我?如何获取该窗口的基址?

c++ winapi

0
推荐指数
1
解决办法
1050
查看次数

在char C++中显示每个位

我想在char中显示每个位.但这不起作用:

    char flags = byteFromFile();
    for( int i = 0; i < 8; i++ ){
        int tmp = ( flags >> i ) & 0x2;
        cout << tmp;
    }
    cout << endl;
Run Code Online (Sandbox Code Playgroud)

这段代码出了什么问题?

我只得到零,但字节的值为3(我用调试器查找).

c++

-2
推荐指数
1
解决办法
226
查看次数

标签 统计

c++ ×4

arguments ×1

buffer-overflow ×1

c ×1

class ×1

pointers ×1

reference ×1

winapi ×1