gpt4 book ai didi

c++ - 将私有(private)字符串声明为引用有什么不同吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:25:36 24 4
gpt4 key购买 nike

当我阅读我的 C++ 书籍并编写一些示例时,我想到了一个问题。

...
private:
const string someString;

public:
MyClass(const string& someString) : someString(someString) {}
const string& getSomeString() const { return someString; }
...

将 someString 声明为引用真的会有所不同吗?

...
private:
const string& someString;

public:
MyClass(const string& someString) : someString(someString) {}
const string& getSomeString() const { return someString; }
...

如果是这样,优点/缺点或用例是什么(因为两个示例都可以正常编译)?

最佳答案

后者很容易导致悬空引用,因为它只是指向一些不受您的类控制的对象。所以我会避免这种情况。 (一如既往,除非你有充分的理由。)

还有一个显着差异:在第二种情况下,如果用于构造它的字符串发生变化,则您的类中的字符串“将发生变化”,因为您只是引用它。在第一种情况下不会发生这种情况,因为您拥有自己的字符串拷贝。

关于c++ - 将私有(private)字符串声明为引用有什么不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33377975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com