我被告知不要在类中公开我的变量。我应该总是创建一个 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++ 编程风格吗?
关于"我什么时候使用引用和什么时候指针?"有很多问题.他们让我有点困惑.我认为引用不会占用任何内存,因为它只是地址.
现在我做了一个简单的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)
那么我什么时候在参数中使用引用或指针,何时只是一个简单的副本?在我的例子中没有引用,常量是不必要的吗?
我买了"黑客 - 剥削艺术"这本书.其中一个内容是缓冲区溢出.我想我明白他们是如何工作的,但是,我不明白为什么有人会这样做.
让我假装我有一个不安全的程序.任何黑客都可能轻易导致缓冲区溢出.所以呢?那些黑客不知道它是哪个程序,即使他们愿意,他们还能做什么?他们没有我的电脑......即使他们没有登录就无法启动该程序,对吧?
所以基本上我的问题是,在什么情况下黑客会导致缓冲区溢出?他会怎么做?通过互联网?然后什么?
我希望我能在这个问题上找到合适的位置.我真的不明白为什么这样一个不安全的程序是如此重要.
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的游戏中读取法术力.但它不起作用.谁能帮我?如何获取该窗口的基址?
我想在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(我用调试器查找).