gpt4 book ai didi

c++ - 调用名称为类名本身的函数?

转载 作者:搜寻专家 更新时间:2023-10-31 00:02:32 24 4
gpt4 key购买 nike

我不知道他们使用什么方法,因为代码库庞大

它定义了这样一个类:

class ABC {
member_func(string c);
};

main() {
ABC("").member_func("this random string");
}

使我们能够调用 ABC(""); 的缺失代码是什么?

我没有在任何地方看到创建该类的任何对象。

最佳答案

这只是简单地构造了一个 ABC 类型的对象,但没有用该对象初始化任何永久内存位置。即,调用 ABC 构造函数创建的初始化对象是一个临时对象,并且在调用后丢失,因为它不是在调用后可以访问的内存位置构造的,例如自动变量在堆栈上,静态内存位置等。因此,进行“真实世界”中可用的调用的“缺失”代码是实际命名一个构造的对象,以便以后可以访问它......例如,ABC my_object("");ABC my_object = ABC("");

更新:在您发布的更新代码中,再次构造了一个 ABC 类型的临时对象,然后是一个非静态方法名为 member_func 的类 ABC 正在通过调用 ABC 的构造函数创建的临时对象上调用。当然,要使这段代码在“现实世界”中具有任何意义,对 member_func 的调用必须包含一些在类实异常(exception)部可见的副作用(即,类实例可能包含一个数据成员,该成员是指向某个共享内存对象的指针,调用随后会修改该对象)。尽管从您发布的代码示例来看,调用似乎没有任何副作用,但出于所有意图和目的,它都是非操作......临时 ABC 类实例是创建后,它有一个在实例上调用的方法,然后对该实例的任何引用都将丢失,因为它不是在可从 main() 的当前范围访问的内存位置中构造的。

关于c++ - 调用名称为类名本身的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7870261/

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