gpt4 book ai didi

c++ - 使用字符串文字初始化 char * 类成员

转载 作者:太空宇宙 更新时间:2023-11-04 16:08:19 25 4
gpt4 key购买 nike

我在在线测试中遇到了这段代码。这段代码安全吗?我用来创建实例的文字的生命周期是多少?实例化 p1 后文字“John”是否被销毁(因为它完成了使用文字的表达式)。

class Person {
public:

char *name;
Person(char *s) { name = s}
inline void setName(char *newName) {name = newName;}

};

int main(){

Person p1("John");

Person p2("Steve");

p1.setName("Rick");
p2 = p1;
return 0;

}

最佳答案

该代码是非法的,因为字符串文字不能初始化char*。所以,不。

如果您将类型设置为const char*,它就变得合法了。但是,它仍然不安全。

如果您可以保证只会传入一个字符串文字,那很好,因为字符串文字可以保证在程序运行期间有效。你的类(class)不会让文字被破坏。

但你不能保证这一点。您只能将其记录为先决条件,这真的很薄弱。

这是一个非常糟糕的设计。

关于c++ - 使用字符串文字初始化 char * 类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31735748/

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