C++学习(六) C++构造函数与析构函数(一)
2017-12-04 13:06
260 查看
当声明一个 对象时,对象的状态(数据成员的取值)是不确定的。但对象表达了现实世界的实体,因此,一旦声明对象,必须有一个有意义的初始值。C++语言中有一个称为构造函数的特殊成员函数,它可自动进行对象的初始化,还有一个析构函数在对象撤销时执行清理任务,进行善后处理。
构造函数和析构函数是类中的两个特殊的成员函数,具有普通成员函数的许多共同特性,但还具有一些独特的特性,可以归纳成一下几点:
(1)它们都没有返回值说明,也就是定义构造函数和析构函数时不能指出函数返回值的类型,即使是void也不能有;
(2)它们不能被继承;
(3)和大多数C++函数一样,构造函数可以有默认参数;
(4)析构函数可以是虚的,但构造函数不可以是虚的;
(5)不可取它们的地址;
(6)不能用常规调用方法调用构造函数,当使用完全的限定名(带对象名、类名和函数名)时可以调用析构函数。比较特殊地是,在对象数组中,初始化数组元素时可以显式调用成员函数;
(7)当定义对象时,编译程序自动调用构造函数;当删除对象时,编译程序自动调用析构函数;
构造函数和析构函数是类中的两个特殊的成员函数,具有普通成员函数的许多共同特性,但还具有一些独特的特性,可以归纳成一下几点:
(1)它们都没有返回值说明,也就是定义构造函数和析构函数时不能指出函数返回值的类型,即使是void也不能有;
如果它们有返回值,要么编译器必须知道如何处理返回值,要么就只能由客户程序员自己来显式的调用构造函数与析构函数,这样一来,安全性就被人破坏了。
(2)它们不能被继承;
(3)和大多数C++函数一样,构造函数可以有默认参数;
(4)析构函数可以是虚的,但构造函数不可以是虚的;
(5)不可取它们的地址;
(6)不能用常规调用方法调用构造函数,当使用完全的限定名(带对象名、类名和函数名)时可以调用析构函数。比较特殊地是,在对象数组中,初始化数组元素时可以显式调用成员函数;
(7)当定义对象时,编译程序自动调用构造函数;当删除对象时,编译程序自动调用析构函数;
相关文章推荐
- c++学习笔记之构造函数和析构函数
- C++学习笔记(六)-- 类和对象 构造函数和析构函数 const成员函数 this指针 对象数组 堆栈管理变量
- 【C\C++学习】之十八、C++11六大函数(构造函数,移动构造函数,移动赋值操作符,复制构造函数,赋值操作符,析构函数)
- 学习C++——构造函数和析构函数
- C++学习摘要之二:构造函数和析构函数
- C++学习笔记(调用构造函数和析构函数的顺序)
- C++学习笔记1:构造函数和析构函数
- C++学习 -- 构造函数和析构函数
- c++学习——构造函数与析构函数
- C++学习基础十——子类构造函数与析构函数的执行
- c++学习札记 构造函数与析构函数
- 学习笔记之深入浅出MFC 第8章 C++重要性质---构造函数与析构函数
- 学习C++ -> 构造函数与析构函数
- c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)
- EffectiveC++第三章构造函数析构函数和赋值操作符学习笔记
- C++学习-构造函数、析构函数与虚函数的关系
- 【菜鸟C++学习笔记】12.构造函数与析构函数
- C++学习体会--构造函数,析构函数,拷贝构造函数
- C++ 学习总结(十)——C++类与对象,及构造函数,析构函数,拷贝构造函数
- C++学习笔记一、构造函数和析构函数的概念