我遇到了一个函数,这样它就可以区分被称为
foo("bar");
对比
const char *bob = "bar";
foo(bob);
我想到的可能性是:
- 字符串地址:两个参数都位于图像的 .rdata 部分。如果我在同一个程序中进行两个调用,两个调用都会收到相同的字符串地址。
- RTTI:不知道如何使用 RTTI 来检测这种差异。
我能想到的唯一可行的例子是:
void foo(char *msg)
{
printf("string literal");
}
void foo(const char *&msg)
{
printf("string pointer");
}
foo("bar"); // "string literal"
const char *soap = "bar";
foo(soap); // "string pointer"
我无权访问函数的代码,头文件中的声明只显示了一个函数声明。