有方法的班级,我不明白班级的样子

Rox*_*Rox -1 c++ struct class

我正在阅读"Learn C the Hard Way"一书,并在那里找到了一个代码片段(下面是我的代码,但程序的结构是相同的):

#include <iostream>
#include <string>

using namespace std;

class Person {
private:
    string name;
    int age;
public:
Person(string name, int age) {;
        this->name = name;
        this->age = age;
    }


~Person() {
    }
};

// When whould I do like this?
class Person *Create_person(string name, int age) {
    class Person *person = new Person(name, age);
    return person;
};    

int main() {
    Person *person = Create_person("John", 30);
}
Run Code Online (Sandbox Code Playgroud)

特别注意

class Person *Create_person(string name, int age) {
        class Person *person = new Person(name, age);
        return person;
    };
Run Code Online (Sandbox Code Playgroud)

这是什么功能?为什么我会这样称呼它而不仅仅是这样Person *person = new Person?这是一个简短的形式

class Person {
public:
   Person *Create_person(string name, int age){
        Person *person = new Person(name, age);
        return person;
   }
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*ker 5

Create_person是一个全局函数,它Person在free store上创建一个对象并返回该对象的地址.在这方面,它完全相同new Person(whatever),在这种情况下,完全是多余的.在这种情况下,这种功能很方便,因此这可能是对工厂功能的温和介绍.