C++笔记----构造函数与析构函数(三)
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++笔记----构造函数与析构函数(三)的更多相关文章
- C++学习笔记-构造函数和析构函数
构造函数和析构函数是C++的重要组成部分,了解构造函数和析构函数有助于深入了解C++ 构造函数 构造函数产生的原因 在C++中,有时候需要在对象创建的时候初始化数据,如果采用普通函数的话,每次初始化都 ...
- C++笔记----构造函数与析构函数(二)
构造函数是一种特殊的成员函数.在创建对象的时候自动调用,对对象的数据成员进行初始化. (1)栈区中创建的对象,在生存期结束的时候会自动调用析构函数. (2) 在堆上创建的对象,要由程序员显示调用del ...
- 《C++ Primer Plus》10.3 类的构造函数和析构函数 学习笔记
10.3.1 声明和定义构造函数构造函数原型:// constructor prototype with some default argumentsStock(const string &c ...
- C++学习笔记(7)----类的数组中构造函数和析构函数的调用顺序
C++类的数组中构造函数和析构函数的调用顺序(2) 对于如下的代码: #include<iostream> using namespace std; class CBase { priva ...
- C++学习笔记(6)----基类和派生类的构造函数和析构函数的执行顺序
基类和派生类:构造函数和析构函数的执行顺序 在Visual Studio中,新建控制台工程,构造类如下: #include<iostream> using namespace std; c ...
- python学习笔记(二十一)构造函数和析构函数
python中的特殊方法,其中两个,构造函数和析构函数的作用: 比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这 ...
- C++学习笔记(1)-构造函数与析构函数
1.C++规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象. 2.若没有提供任何构造函数,那么c++自动提供一个默认的构造函数,该默认构造函数是一个没有参数的构造函数,它仅仅负责创建对象而 ...
- 内存的分配VS回收&构造函数VS析构函数
之前有一个问题一直困扰着我,就是一个变量出了作用域,我以为这个变量的内存就被回收了,其实不是这样的,昨天问了一个高手,才豁然开朗,自己在看相关代码的反汇编代码,才知道原来真是这样就.这个问题,我想简单 ...
- C++C++中构造函数与析构函数的调用顺序
http://blog.csdn.net/xw13106209/article/details/6899370 1.参考文献 参考1: C++继承中构造函数.析构函数调用顺序及虚函数的动态绑定 参考2 ...
随机推荐
- R平方
参考其他网页 通常R2越大越好,但看到亦在后面标上P值,这两者之间有何联系? R2和p值没有必然联系.就像你做线性分析和(单因素或多因素)方差分析一样,若A和K线性相关,也有可能A对K么有显著性影响一 ...
- Java基础之反射和动态代理
1,反射是依赖于Class对象,然后根据Class对象,去操作该类的资源的.Class对象是发射的基石! 问题1:人这类事物用什么表示?汽车这类事物用什么表示>计算机文件用什么表示?有如此多的事 ...
- LeetCode之387. First Unique Character in a String
-------------------------------------------------- 最开始的想法是统计每个字符的出现次数和位置,如下: AC代码: public class Solu ...
- C#回顾 –6.特性
1.特性是什么? Attribute 用来对类.属性.方法等标注额外的信息,贴一个标签(附着物) 通俗:给 类 或 类成员 贴一个标签,就像航空部为你的行李贴一个标签一样 个人理解,特性就是修饰 ...
- HTML5和CSS3新特性一览
HTML5 1.HTML5 新元素 HTML5提供了新的元素来创建更好的页面结构: 标签 描述 <article> 定义页面独立的内容区域. <aside> 定义页面的侧边栏内 ...
- [Android]Android开发入门之HelloWorld
引言:在做Unity开发的时候,发现这么个问题,虽然Unity是跨平台的,能够进行Android,IOS,Web,PC等开发,但如果要实现一些稍微系统层的东西,还是需要通过通信,调用原系统的接口(自定 ...
- WPF中的动画——(三)时间线(TimeLine)
WPF中的动画——(三)时间线(TimeLine) 时间线(TimeLine)表示时间段. 它提供的属性可以让控制该时间段的长度.开始时间.重复次数.该时间段内时间进度的快慢等等.在WPF中内置了如下 ...
- android--gradle编译龟速?offline!
- VBA: Cant find project or librar
Appears OK to me but the error message " Cant find project or library." suggests it could ...
- 利用 canvas 破解 某拖动验证码
利用 canvas 破解 某拖动验证码 http://my.oschina.net/u/237940/blog/337194