关于C++返回引用的一个疑问

下面的C++函数:

const free_throws & clone(free_throws & ft)
{
    free_throws * pt ;
    *pt = ft ;
    cout << "pt = " << pt << endl ;
    cout << "&ft = " << &ft << endl ;
    return *pt ;
}

为什么说对该函数的调用隐藏了对new的调用?

这段代码其实就是返回了ft
因为是引用,所以不会调用构造函数
不知道你具体想问什么

参考:

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7780588
  • 这篇博客也不错, 你可以看下如何为C++选择合适的开发环境?
  • 您还可以看一下 夏曹俊老师的C++实战精讲--商用软件中的C++工程开发技术实践课程中的 对象构建时间性能构建中的开销问题小节, 巩固相关知识点
  • 除此之外, 这篇博客: 如何为C++程序写一个头文件?中的 2.在项目中新建2个文件   部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    在上述函数调用中,对new的调用被隐藏的原因是因为函数clone并没有动态分配内存来存储对象,而只是在栈上创建了一个指针pt。指针pt被赋值为ft指向的对象的值,但是它并没有指向分配的内存空间,而是指向了一个未初始化的指针。

    这个问题可以通过下面的代码来解决:

    const free_throws* clone(const free_throws* ft)
    {
        free_throws* pt = new free_throws(*ft);
        cout << "pt = " << pt << endl;
        cout << "&ft = " << ft << endl;
        return pt ;
    }
    

    在这个解决方案中,我们使用了动态内存分配运算符new来创建一个与ft指向的对象相同的新对象,并将指针pt指向这个新的对象。然后,我们把指针pt返回,以便在调用函数的地方可以继续使用这个新的对象。

    这样的解决方案可以确保我们使用了动态内存分配来创建新的对象,并且返回了指向这个新对象的指针。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^