下面的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
因为是引用,所以不会调用构造函数
不知道你具体想问什么
在上述函数调用中,对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
返回,以便在调用函数的地方可以继续使用这个新的对象。
这样的解决方案可以确保我们使用了动态内存分配来创建新的对象,并且返回了指向这个新对象的指针。