[問題] 在class外面走後門存取private
問題(Question):
在stackoverflow上面看到一個有趣的問題,只是不太了解為什麼可以,想知道原因。
safe.h
class safe
{
int money;
public:
safe()
: money(1000000)
{
}
template <typename T>
void backdoor()
{
// Do some stuff.
}
};
main.cpp:
#include <safe.h>
#include <iostream>
class key;
template <>
void safe::backdoor<key>()
{
// My specialization.
money -= 100000;
std::cout << money << "\n";
}
int main()
{
safe s;
s.backdoor<key>();
s.backdoor<key>();
}
Output:
900000
800000
==================================
class A
{
int a;
}
class B
{
public:
int b;
}
union
{
A a;
B b;
};
then B * b = reinterpret_cast<B*>(&a);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.249.13
推
06/12 01:46, , 1F
06/12 01:46, 1F
→
06/12 02:05, , 2F
06/12 02:05, 2F
→
06/12 02:07, , 3F
06/12 02:07, 3F
→
06/12 02:07, , 4F
06/12 02:07, 4F
→
06/12 02:09, , 5F
06/12 02:09, 5F
→
06/12 02:10, , 6F
06/12 02:10, 6F
→
06/12 02:13, , 7F
06/12 02:13, 7F
推
06/12 02:14, , 8F
06/12 02:14, 8F
→
06/12 02:16, , 9F
06/12 02:16, 9F
推
06/12 02:21, , 10F
06/12 02:21, 10F
→
06/12 02:21, , 11F
06/12 02:21, 11F
→
06/12 02:23, , 12F
06/12 02:23, 12F
→
06/12 02:28, , 13F
06/12 02:28, 13F
→
06/12 02:32, , 14F
06/12 02:32, 14F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章