如何更好的进行C++构造函数

开发 后端
函数是C++程序的主要组成部分,一个函数可以调用其他函数。在设计良好的程序中,每个函数都有特定的目的,下文对C++构造函数进行讲解。

构造函数是开发过程中的一种特殊的方法,其主要用来在创建对象时的初始化对象,也就是对象成员变量赋初始值,在C++中进行C++构造函数时,无论什么时候,只要创建类或结构,就会调用它的构造函数

但是程序通过了编译检查并不表示错误已经不存在了,在“错误”的大家庭里,“语法错误”的地位只能算是小弟弟。级别高的错误通常隐藏得很深,就象狡猾的罪犯,想逮住他可不容易。

根据经验,不少难以察觉的程序错误是由于变量没有被正确初始化或清除造成的,而初始化和清除工作很容易被人遗忘。Stroustrup在设计C++语言时充分考虑了这个问题并很好地予以解决:把对象的初始化工作放在C++构造函数中,把清除工作放在析构函数中。当对象被创建时,构造函数被自动执行。当对象消亡时,析构函数被自动执行。这下就不用担心忘了对象的初始化和清除工作。

构造函数与析构函数的名字不能随便起,必须让编译器认得出才可以被自动执行。Stroustrup的命名方法既简单又合理:让构造函数、析构函数与类同名,由于析构函数的目的与构造函数的相反,就加前缀‘~’以示区别。

除了名字外,构造函数与析构函数的另一个特别之处是没有返回值类型,这与返回值类型为void的函数不同。C++构造函数与析构函数的使命非常明确,就象出生与死亡,光溜溜地来光溜溜地去。如果它们有返回值类型,那么编译器将不知所措。为了防止节外生枝,干脆规定没有返回值类型。(以上典故参考了文献[Eekel, p55-p56])

C++构造函数有个特殊的初始化方式叫“初始化表达式表”(简称初始化表)。初始化表位于函数参数表之后,却在函数体 {} 之前。这说明该表里的初始化工作发生在函数体内的任何代码被执行之前。

构造函数初始化表的使用规则:

如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数

例如:

  1. class F  
  2.  
  3. {  
  4.  
  5. public:  
  6.  
  7. F(int x, int y); // 构造函数  
  8.  
  9. private:  
  10.  
  11. int m_x, m_y;  
  12.  
  13. int m_i, m_j;  
  14.  

类的数据成员的初始化可以采用初始化表或函数体内赋值两种方式,这两种方式的效率不完全相同,非内部数据类型的成员对象应当采用***种方式初始化,以获取更高的效率。

【编辑推荐】

  1. C与C++中标准输入实现方式上的一点区别
  2. C++编译器如何对Const常量进行分配存储空间
  3. C++类库设计的基本构思与方法
  4. 玩转C++语言的几种方法
  5. 如何更好的进行C++代码编制
责任编辑:chenqingxiang 来源: NET130
相关推荐

2010-01-15 18:06:20

C++引用

2010-01-22 18:06:24

C++代码

2010-01-22 11:13:16

C++静态

2010-01-22 13:20:27

C++代码

2010-02-05 17:16:05

C++构造函数

2010-01-28 10:49:22

C++构造函数

2010-01-25 14:00:27

C++类

2010-01-27 17:16:52

C++构造函数

2010-01-15 19:28:59

C++

2010-01-15 16:25:48

学习C++

2010-01-20 17:48:07

C++ 函数重载

2023-11-28 11:51:01

C++函数

2010-01-20 17:32:16

C++函数

2010-01-26 09:40:23

C++代码

2010-01-12 10:50:59

学习C++

2010-01-13 18:44:03

C++编译

2010-01-28 15:31:34

学习C++语言

2010-01-20 18:06:06

C++虚基类

2010-01-25 17:05:37

C++语言

2010-01-27 10:13:22

C++类对象
点赞
收藏

51CTO技术栈公众号