我已经用 C++ 编程了一段时间,但肯定不会称自己为专家。这个问题不是为了解决我遇到的实际问题,而是更多地了解 C++ 在做什么。
想象一下,我有一个需要单个参数的函数:
void doSomething(SomeClass& ref)
{
// do something interesting
}
(注意:参数是对 SomeClass 的引用)然后我这样调用函数:
int main(int argc, char *argv[])
{
SomeClass a;
doSomething(a);
}
为什么这是合法的 C++?该函数期望引用 SomeClass,但我将其传递给 SomeClass 类型的静态分配变量。引用就像指针不是吗?如果我们用指针替换引用,编译器会抱怨。为什么引用以这种方式与指针不同,幕后发生了什么?
对不起,如果这是一个愚蠢的问题,这只是困扰我!