C++笔记1

原创 2013年12月02日 10:50:11

BasicTutorial6::BasicTutorial6(void):mRoot(0),mPluginsCfg(Ogre::StringUtil::BLANK)

这是构造函数初始化列表

 

C++构造函数的目的是对变量的初始化,不初始化会造成错误。

在C++中,变量定义时,系统会自动调用变量的构造函数对变量进行初始化。只要将相应的初始化代码放在构造函数中,就能够保证该类在实例化对象的时候能够给对象赋以理想的初值。

实际上,程序进入构造函数的大括号体时,就应经完成了变量的定义(也就是分配内存空间)。这就难免会造成这样的情况:在对象呗构造时,程序进入构造函数大括号体之前,首先调用对象的default构造函数,然后进入构造函数体内,重新对变量进行赋值,这降低了程序的效率。

更糟糕的是,如果一个对象必须经由一个非

default构造函数那书进行定义才能够在将来被正常地赋值,而系统默认地调用它的default构造函数,就会出现很大的错误。

||

||

\/

C++的设计者引入了构造函数初始化列表的概念。在构造函数的初始化列表中进行的是对变量的定义与初始化(内存分配空间),而不是简单的赋值。这样就解能够解决上述的效率以及构造函数的选择问题。

 

应为在初始化列表中发生的是成员变量的定义,也就是分配空间,因此初始化列表中构造的顺序与实际编译器定义变量的顺序可能是不一致的,也就是说,编译器不会按照设计者在初始化列表中初始化变量的顺序来为变量分配内存空间。初始化列表中变量的初始化顺序时其在类体内定义的顺序。

同样得,因为const型成员变量只能在被定义的同时被初始化而不能够再次被赋值,它也只能被放在构造函数的初始化列表中。

 

括号赋值只用在定义变量并初始化中。

就是说在没有默认构造函数的时候,如果一个类对象是另一个类的数据成员,那么初始化这个数据成员,就应该放到冒号后面。这样可以带参数。所以在C++中就增加了这种机制,这是面向对象编程所必须的。

相关文章推荐

C++ MFC 学习笔记(1)

  • 2012年07月13日 09:36
  • 220KB
  • 下载

Armadillo C++ linear algebra library 学习笔记(2)——矩阵的基本操作(1)

1、获取矩阵的某个元素A、通过nameMat(i,j)获取矩阵nameMat的第(i,j)个元素。 B、示例#include #include using namespace arma; int...
  • jnulzl
  • jnulzl
  • 2015年07月08日 21:20
  • 3055

C++ 笔记、资料1

  • 2013年07月08日 12:08
  • 663KB
  • 下载

Lua学习笔记(1) : 第一个Lua程序 - Lua与C++混合编程

一 Lua简介 Lua是一个轻量化的脚本语言,体积小,速度快。 Lua须嵌入在其他宿主语言(如:C、C++)中来执行,因此功能也很容易灵活扩充。 Lua是个动态型别语言,这表示不需要对变量宣告类型,而...

c++ primer(第五版)笔记 第二章(1) 基本数据类型

//基本内置类型 // |--算术类型(arithmetic type) // |--整型(integral type) // |--字符(char) 1 byte // ...

C++语言笔记系列之十八——虚函数(1)

1.C++中的多态 (1)多态性:同一个函数的调用可以进行不同的操作,函数重载是实现多态的一种手段。 (2)联编:在编译阶段进行联接,即是在编译阶段将一个函数的调用点和函数的定义点联接起来。 A.静态...

c++ primer阅读笔记-13章-1

1、 复制构造函数、赋值操作符和析构函数总称为复制控制。编译器自动实现这些操作,但类也可以定义自己的版本。...

《C++ primer》(4th)读书笔记(1 start)

0,Preface等相关  structure of this book: Much of the power of C++ comes from its support for programmin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++笔记1
举报原因:
原因补充:

(最多只允许输入30个字)