大家好,C / C++代码编程专家。
我偶然发现了这段代码,但我对这两个函数返回的内容感到困惑。
有什么好心的人可以帮助我吗?
我试图使代码尽可能通用和对他人有用。

ClassA*& func1() {
    static ClassA* mClassA;
    return mClassA;
}

ClassA* func2() {
    ClassA*& mClassA = func1();
    if(!mClassA) {
        ... // omitted some code that fill mClassA with data.
    }
    return mClassA;
}

[edit]还想问一下,func1()和func2()中的*&是否互相抵消?

最佳答案

ClassA*& func1()

返回通过引用在方法内部声明的静态指针。正在做:
ClassA*& x = func1()
x = NULL

会改变mClassA
ClassA* func2()

返回指针的副本。它将指向相同的内存,但是更改指针不会影响mClassA

10-06 09:35