本文阅读时间3分钟。难度⭐⭐
这是Ghostown第4篇原创文章。
![a30d50c47589d07f0f16d9f41c532896.gif](https://i-blog.csdnimg.cn/blog_migrate/64c6c64675e398e5ba645828212a1da5.gif)
构造函数是一种特殊的方法,主要用来在创建对象时初始化对象。 百度百科这是度娘对构造函数的定义。(是不是感觉好像懂了,但是又好像什么都没有说) 构造函数这个名字显然不是从Constructor直译过来的,维基百科把构造函数翻译成了构造器,我觉得和Constructor意思更贴切。 度娘的定义肯定是没有错的,但是太抽象。下面我来逐词解释一下。 首先,“一种特殊的方法”,特殊在哪里? 有两点: 一是构造函数函数名和类名一致。 构造函数一定存在于类中,和类名一致的规定目的是为了让编译器能识别出是构造函数而不是别的自定义函数。 二是构造函数没有返回值。 这与普通函数返回类型是void不一样。构造函数的使命非常明确,只为初始化对象服务,不做其他份外的事情。
其次,何为创建对象?
还记得 当我们在谈论C++指针的时候,我们到底在谈什么(三) 中谈到的malloc()函数。当用malloc()分配内存空间的时候,对象就被创建起来了。从内存布局的角度,这个空间是建立在堆上的。最后,初始化对象又是什么意思?
当我们用malloc()创建完对象后,此时对象还处于一种 原始 (raw)状态,因为没有被初始化。如果直接拿来使用......还是算了,你不知道这片空间之前用来做什么的,理论上出任何问题都有可能。 所以 初始化的本质就是给堆上的这片空间赋初值,使它从一个原始状态变成可用的状态 。当然体现在代码中就是初始化类成员变量。 上面出现了很多类的概念,这里稍微提一下,在C++中我们会用类结构来定义和管理资源,类可以让程序的逻辑和数据按照不同的角色进行封装,提高代码的重用性和扩展性。 今天只能算是C++构造函数的引子。别看构造函数作用平平无奇,这里的坑足够劝退初学者了(真的很复杂)。所以说玩C++的都是勇士哈哈,好啦下次Ghostown带大家继续学习。