gpt4 book ai didi

C++ - 返回对象的函数

转载 作者:IT老高 更新时间:2023-10-28 22:08:22 27 4
gpt4 key购买 nike

// Assume class definition for Cat is here.

Cat makeCat() {
Cat lady = new Cat("fluffy");
return lady;
}

int main (...) {
Cat molly = makeCat();
molly->eatFood();
return 0;
}

molly->eatFood()会出现“use after free”错误吗?

最佳答案

更正了您的程序并创建了 class Cat 的示例实现:

#include <iostream>
#include <string>

class Cat {
public:
Cat(const std::string& name_ = "Kitty")
: name(name_)
{
std::cout << "Cat " << name << " created." << std::endl;
}
~Cat(){
std::cout << "Cat " << name << " destroyed." << std::endl;
}
void eatFood(){
std::cout << "Food eaten by cat named " << name << "." << std::endl;
}
private:
std::string name;
};

Cat* makeCat1() {
return new Cat("Cat1");
}

Cat makeCat2() {
return Cat("Cat2");
}

int main (){
Cat kit = makeCat2();
kit.eatFood();

Cat *molly = makeCat1();
molly->eatFood();
delete molly;

return 0;
}

它将产生输出:

Cat Cat2 created.
Food eaten by cat named Cat2.
Cat Cat1 created.
Food eaten by cat named Cat1.
Cat Cat1 destroyed.
Cat Cat2 destroyed.

我建议你在继续之前学习一本关于 C++ 封面的基础书籍。

关于C++ - 返回对象的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3668967/

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