使用指针和引用获取对象

tob*_*obi 2 c++

让我们假设我们有一个statically(Type mObject;)创建的对象,它通过使用getObject()方法向程序员公开.我想知道以这种方式获取对象有哪些优点和缺点?

Type* SomeClass::getObject() {
    return &mObject;
}

// the programmer types
Type* obj = someClassObj.getObject();
obj->someMethod();
Run Code Online (Sandbox Code Playgroud)

这样:

Type& SomeClass::getObject() {
    return mObject;
}

// the programmer types
Type& obj = someClassObj.getObject();
obj.someMethod();
Run Code Online (Sandbox Code Playgroud)

Bal*_*Pal 5

在纯C++中,我们很少使用指针.特别是原始指针.

大多数代码处理对象实例.由于C++具有通过身份引用它们的引用,与C不同,获取地址和传递指针是为必须的情况保留的.喜欢:

  • 当你想要NULL表示缺席
  • 当你想切换到不同的对象(重新分配指针)
  • 当你转让所有权

您的示例不适合任何类别,因此您使用引用.这会向用户传达一个对象将始终存在的信息.因此,大部分时间都没有必要修复obj,你可以继续someClassObj.getObject().someMethod().第一种情况需要在它们之间进行NULL检查.