gpt4 book ai didi

c++ - 将值分配给不指向 C++ 中任何内容的指针

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

我有一些代码看起来像这样:

class MyClass
{
void doSomething(std::string& stringvar) {
// Does something
}}
class AnotherClass
{ /* Some data structure */ }

然后在主程序中,程序员调用

MyClass* Class1;
std::string myString = "something";
AnotherClass* SecondClass;
SecondClass = (*Class1).doSomething(myString);

我的问题是,这是做什么的,因为我正在定义一个指向任何内容的指针,然后设置它的值?它为什么设置了一个值?一个随机的内存插槽?在哪里?在堆栈或堆中?为什么有人会创建一个类来编写一个函数来做某事?我不太了解 MyClass 类,doSomething 是否有可能实际上填充了一些数据结构?如果是,那么如果它也是一个不指向任何内容的指针,那么如何以及在哪里?

最佳答案

正如您所说的问题,这是未定义的行为。这意味着任何事情都被允许发生。 其中一个可能发生的事情是它按照程序员的预期工作。如果 doSomething 是非虚函数,并且不访问类的任何(非静态)成员变量,则这种情况尤其可能发生。

这仍然是未定义的行为。一旦您更改完全不相关的内容,它可能会停止工作。

如果我的诊断是正确的,解决方案是使 doSomething 成为静态成员函数,并将其调用为:

    secondVar = MyClass::doSomething(mystring);

关于c++ - 将值分配给不指向 C++ 中任何内容的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49182412/

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