有方法的类,我不明白类的外观
Class with method, I don´t understand the class´s look
我正在读《艰难地学习C》一书,在那里发现了一个代码片段,看起来像这样(下面是我的代码,但程序的结构是一样的):
#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);
}
尤其是
class Person *Create_person(string name, int age) {
class Person *person = new Person(name, age);
return person;
};
那是什么功能?为什么我会这样称呼它,而不仅仅是Person *person = new Person
?这是的缩写吗
class Person {
public:
Person *Create_person(string name, int age){
Person *person = new Person(name, age);
return person;
}
}
Create_person
是一个全局函数,它在空闲存储上创建一个Person
对象并返回该对象的地址。在这方面,它与new Person(whatever)
完全相同,在这种情况下,它是完全多余的。在某些情况下,这种函数很方便,所以这可能是对工厂函数的一个温和介绍。
使用CreatePerson
函数而不是执行new
的习惯用法直接称为工厂方法模式。这是相当罕见的它用于没有虚拟函数的类;它通常在调用代码只看到一个抽象基类,对实际类型可能是new
ed.
这个函数没有什么特别之处。CCD_ 8和CCD_。
class Person *Create_person(string name, int age) {
class Person *person = new Person(name, age);
return person;
};
和
Person *Create_person(string name, int age) {
Person *person = new Person(name, age);
return person;
};
意思是一样的。无论如何,该函数似乎毫无意义,您可以直接调用new Person(name, age)
,正如您已经想到的那样。
class Person *Create_person(string name, int age) {
class Person *person = new Person(name, age);
return person;
};
是全局命名空间中的一个函数,它返回指向Person
对象的指针。这里不需要class
关键字,可以省略。实际上,它应该被提交。它之所以在那里,可能是因为它是"C风格"。
相关文章:
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 我不明白这段代码是如何对这个pythonlist()进行排序的,也不明白如何用C++中的向量来重现它
- 不明白迭代器,引用和指针失效,一个例子
- 而循环:简单的除法程序输出零,不明白为什么
- 我不明白为什么我的代码不起作用并且需要更长的时间来运行
- 不明白这个程序的输出
- 我遇到了这个代码片段,不明白. 它递归检查 C++ 字符串中是否存在大写字符
- 什么是非营利组织???我的问题是我不明白为什么有人会使用它
- 我正在尝试用 c++ 制作菜单,但不明白为什么它不循环
- 我的程序不适用于 strcat - 我似乎不明白为什么?
- std::我不明白的矢量元素错误
- 我不明白 c++ 中的"cin"工作
- 我不明白参数和参数如何协同工作
- 什么'!((n % 5 != 0) ||(n % 20 == 0))'变身?为什么呢?我似乎不明白
- 在反转字符串'my.name.is'时,我得到的输出为"is@.name.my"。我不明白'@'是从哪里来的
- 不明白使用双指针 (**) 创建 2d 动态数组
- 我不明白为什么会编译
- 我不明白尝试使用字符串作为函数参数时遇到的错误
- 外观 MFC 滚动条
- 有方法的类,我不明白类的外观