c++ - 这些 C++ 函数返回什么? ClassA*& func1()

标签 c++ pointers reference

各位 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

关于c++ - 这些 C++ 函数返回什么? ClassA*& func1(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12315405/

相关文章:

C++使用相同的代码循环遍历对象和指针

vba - 如何打开(并保存)Word文档中的所有嵌入式文档?

asp.net - 我的项目引用了 3 个不同版本的 mscorlib.dll

c++ - 为什么通过引用传递给函数的变量不会立即更改其值?

c++ - boost::thread 在线程之间传递数据

c - 如何交换C中地址中的值

c++ - 我误解了指针的工作原理吗?

c++ - 需要字节序解决方法

c++ - C++中的抽象类

c++ - 通过唯一的成员 ID 来标识对象是个好主意吗?