1、构造函数初始化列表

推荐在构造函数初始化列表中进行初始化

构造函数的执行分为两个阶段:初始化段、 普通计算段

2、对象成员及其初始化

 #include<iostream>
using namespace std; class Object
{
public:
Object(int num) :num_(num)
{
cout << "Object..." <<num_<<"..."<< endl;
}
~Object()
{
cout << "~Object..." << num_ << "..." << endl;
}
private:
int num_;
};
class Container
{
public:
Container(int obj1=, int obj2=):obj1_(obj1), obj2_(obj2)
{
cout << "Container..." << endl;
}
~Container()
{
cout << "~Container..." << endl;
}
private:
Object obj1_;
Object obj2_;
};
int main(void)
{
Container c(,);//先构造Object,再是Container析构次序相反 return ;
}

3、const成员、引用成员的初始化

const成员的初始化只能在初始化列表中进行

 #include<iostream>
using namespace std; //对象成员(对象所对应的类没有默认构造函数)的初始化,只能在构造函数初始化列表中进行
class Object
{
public:
Object(int num=) :num_(num), kNum_(num), redNum_(num_)
{
//kNum_=100; ERROR
//redNum_ = num; ERROR
cout << "Object..." << num_ << "..." << endl;
}
~Object()
{
cout << "~Object..." << num_ << "..." << endl;
}
private:
int num_;
const int kNum_; //const成员的初始化只能在构造函数初始化列表中进行
int& redNum_; //引用成员的初始化只能在构造函数初始化列表中进行
}; int main(void)
{
Object obj(); return ;
}

加入枚举类型

#include<iostream>
using namespace std; class Object
{
public:
enum E_TYPE
{
TYPE_A=,
TYPE_B=
};
public:
Object(int num=) :num_(num), kNum_(num), redNum_(num_)
{
cout << "Object..." << num_ << "..." << endl;
}
~Object()
{
cout << "~Object..." << num_ << "..." << endl;
}
void DisplaykNum_()
{
cout << "kNum_" << kNum_ << endl;
}
private:
int num_;
const int kNum_;
int& redNum_;
}; int main(void)
{
Object obj1();
Object obj2();
obj1.DisplaykNum_();
obj2.DisplaykNum_();
cout << obj1.TYPE_A << endl;
cout << obj2.TYPE_A << endl;
cout << Object::TYPE_A << endl;
return ;
}

C++笔记----构造函数与析构函数(三)的更多相关文章

  1. C++学习笔记-构造函数和析构函数

    构造函数和析构函数是C++的重要组成部分,了解构造函数和析构函数有助于深入了解C++ 构造函数 构造函数产生的原因 在C++中,有时候需要在对象创建的时候初始化数据,如果采用普通函数的话,每次初始化都 ...

  2. C++笔记----构造函数与析构函数(二)

    构造函数是一种特殊的成员函数.在创建对象的时候自动调用,对对象的数据成员进行初始化. (1)栈区中创建的对象,在生存期结束的时候会自动调用析构函数. (2) 在堆上创建的对象,要由程序员显示调用del ...

  3. 《C++ Primer Plus》10.3 类的构造函数和析构函数 学习笔记

    10.3.1 声明和定义构造函数构造函数原型:// constructor prototype with some default argumentsStock(const string &c ...

  4. C++学习笔记(7)----类的数组中构造函数和析构函数的调用顺序

    C++类的数组中构造函数和析构函数的调用顺序(2) 对于如下的代码: #include<iostream> using namespace std; class CBase { priva ...

  5. C++学习笔记(6)----基类和派生类的构造函数和析构函数的执行顺序

    基类和派生类:构造函数和析构函数的执行顺序 在Visual Studio中,新建控制台工程,构造类如下: #include<iostream> using namespace std; c ...

  6. python学习笔记(二十一)构造函数和析构函数

    python中的特殊方法,其中两个,构造函数和析构函数的作用: 比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这 ...

  7. C++学习笔记(1)-构造函数与析构函数

    1.C++规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象. 2.若没有提供任何构造函数,那么c++自动提供一个默认的构造函数,该默认构造函数是一个没有参数的构造函数,它仅仅负责创建对象而 ...

  8. 内存的分配VS回收&构造函数VS析构函数

    之前有一个问题一直困扰着我,就是一个变量出了作用域,我以为这个变量的内存就被回收了,其实不是这样的,昨天问了一个高手,才豁然开朗,自己在看相关代码的反汇编代码,才知道原来真是这样就.这个问题,我想简单 ...

  9. C++C++中构造函数与析构函数的调用顺序

    http://blog.csdn.net/xw13106209/article/details/6899370 1.参考文献 参考1: C++继承中构造函数.析构函数调用顺序及虚函数的动态绑定 参考2 ...

随机推荐

  1. C++ 判断字符串是否全是数字

    在实际的工作中,需要提取程序中的字符串信息,但是程序中经常将一些数字当做字符串来进行处理,例如表盘的刻度信息,这时候就需要判断字符串是否全为数字,来进行真正意义上的字符串提取.下面介绍了判断字符串是否 ...

  2. 【原创】js中input type=file的一些问题

    1.介绍 在开发中,文件上传必不可少,input[type=file] 是常用的上传标签,但是它长得又丑.浏览的字样不能换,但是他长得到底有多丑呢.我们来看看在不同浏览器里的样子吧. <inpu ...

  3. python中如何避免中文是乱码

    这个问题是一个具有很强操作性的问题.我这里有一个经验总结,分享一下,供参考:首先,提倡使用utf-8编码方案,因为它跨平台不错.经验一:在开头声明: # -*- coding: utf-8 -*- 有 ...

  4. javascript的几种继承

    1.原型链继承:构造函数.原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针.确认原型和实例之间的关系用instanceof. ...

  5. WdatePicker.js开始日期和结束日期比较

    jQuery.validator.addMethod("endDate",       function(value, element) {           var start ...

  6. MyBatis持久层框架使用总结

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis . 2 ...

  7. CentOS7 FTP服务搭建(虚拟用户访问FTP服务)

    概述 最近在搞Oracle在Linux系统下集群,针对Linux系统,笔人也是一片空白.Liunx外部文件的传输,避免不了使用FTP服务,所以现在就整理下,CentOS7环境下,FTP服务的搭建.FT ...

  8. JavaScript中两个感叹号的作用

    先用一个简单的例子说明:var o={flag:true};var test=!!o.flag;//等效于var test=o.flag||false;alert(test);由于对null与unde ...

  9. HTML5+CSS3+Jquery实现纯手工的垂直时光轴【附源码】

    前言 由于工作中需要,系统中需要记录不同时间发生的事件,为了提升用户体验,决定用时光轴来实现.[据说这个东西挺火的,QQ空间和FB都在用...] 这个时光轴是在 三生石上 这位博主的时光轴基础上修改的 ...

  10. Eclipse - 常用插件介绍

    1.MyBatis Generator 2.FindBugs Feature http://findbugs.cs.umd.edu/eclipse 待完善.