- 浏览: 34891 次
- 性别:
- 来自: 南京
文章列表
析构函数就是这样的一个特殊函数,它可以完成所需的资源回收,作为类构造函数的补充撤销类对象
时会自动调用析构函数
动态分配的对象只有在指向该对象的指针被删除时才撤销
当对象的引用或指针超出作用域时,不会运行析构函数,只有删除指向动态分配对象的指针或实际对
象(而不是对象的引用)超出作用域时,才会运行析构函数
撤销一个容器(不管是标准库容器还是内置数组)时,也会运行容器中的类类型元素的析构函数
容器中的元素总是按逆序撤销:首先撤销下标为 size() - 1 的元素,然后是下标为 size() - 2 的
元素……直到最后撤销下标为 [0] 的元素
析构函数通常用于释放在构造函数或在 ...
只有单个形参,而且该形参是对本类类型对象的引用(常用 const 修饰),这样的构造函数称为复制构造函数 复制构造函数可用于:1. 根据另一个同类型的对象显式或隐式初始化一个对象2. 复制一个对象,将它作为实参传给一个函数3. 从函数返回时复制一个对象4. 初始化顺序容器中的元素5. 根据元素初始化式列表初始化数组元素 当用于类类型对象时,初始化的复制形式和直接形式有所不同:直接初始化直接调用与实参匹配的构造函数,复制初始化总是调用复制构造函数 对于类类型对象,只有指定单个实参或显式创建一个临时对象用于复制时,才使用复制初始化 当形参或返回值为类类型时,由复制构造函数进行复制 如果没有为类类型数 ...
友元机制允许一个类将对其非公有成员的访问权授予指定的函数或类 友元的声明以关键字 friend 开始,它只能出现在类定义的内部 友元声明可以出现在类中的任何地方:友元不是授予友元关系的那个类的成员,所以它们不受声 ...
每个类都定义了自己的新作用域和唯一的类型,两个不同的类具有两个的类作用域 即使两个类具有完全相同的成员列表,它们也是不同的类型,每个类的成员不同于任何其他类(或任何其他作用域)的成员 在类作用域之外,成 ...
类的成员函数可以访问该类的 private 成员 每个成员函数(除了static 成员函数外)都有一个额外的、隐含的形参 this,在调用成员函数时,形参 this 初始化为调用函数的对象的地址 使用 const 的函数称为常量成员函数,由于this 是指 ...
最简单地说,类就是定义了一个新的类型和一个新作用域每个类可以没有成员,也可以定义多个成员,成员可以是数据、函数或类型别名一个类可以包含若干公有的、私有的和受保护的部分创建一个类类型的对象时,编译器会自动使用一个构造函数来初始化该对象构造函数一般就使用一个构造函数初始化列表来初始化对象的数据成员在类内部,声明成员函数是必需的,而定义成员函数则是可选的,在类内部定义的函数默认为 inline在类外部定义的成员函数必须指明它们是在类的作用域中成员函数有一个附加的隐含实参,将函数绑定到调用函数的对象将关键字 const 加在形参表之后,就可以将成员函数声明为常量const 成员不能改变其所操作的对象的数 ...
每一个 IO 头文件都定义了 char 和 wchar_t 类型的类和标准输入/输出对象。IO 对象不可复制或赋值由于流对象不能复制,因此不能存储在 vector(或其他)容器中。形参或返回类型也不能为流类型。如果需要传递或返回 IO 对象,则必须传递或返回指向该对象的指针或引用对 IO 对象的读写会改变它的状态,因此引用必须是非 const 的。检测流是否用的最简单的方法是检查其真值所有流对象都包含一个条件状态成员,该成员由 setstate 和 clear 操作管理。这个状态成员为 iostate 类型,这是由各个 iostream 类分别定义的机器相关的整型。每个 IO 类还定义了三个 i ...
函数由函数名以及一组操作数类型唯一地表示。函数的操作数,也即形参,在一对圆括号中声明,形参与形参之间以逗号分隔。函数执行的运算在一个称为函数体的块语句中定义。每一个函数都有一个相关联的返回类型。C++ 语言使用调用操作符(即一对圆括号)实现函数的调用。函数体是一个作用域类似于局部变量,函数的形参为函数提供了已命名的局部存储空间。它们之间的差别在于形参是在函数的形参表中定义的,并由调用函数时传递函数的实参初始化。实参则是一个表达式。它可以是变量或字面值常量,甚至是包含一个或几个操作符的表达式。实参个数必须与函数的形参个数完全相同,实参必须具有与形参类型相同、或者能隐式转换为形参类型的数据类型。函数 ...
简单语句C++ 中,大多数语句以分号结束。程序语句最简单的形式是空语句(只有一个单独的分号)如果在程序的某个地方,语法上需要一个语句,但逻辑上并不需要,此时应该使用空语句。使用空语句时应该加上注释,以便任何读 ...
- 2008-02-12 21:55
- 浏览 4219
- 评论(0)
表达式由一个或多个操作数通过操作符组合而成。最简单的表达式仅包含一个字面值常量或变量。每个表达式都会产生一个结果。当一个对象用在需要使用其值的地方,则计算该对象的值。除了特殊用法外,表达式的结果是右值 ...
- 2008-02-12 21:52
- 浏览 3229
- 评论(0)
数组是由类型名、标识符和维数组成的复合数据类型数组也是一种存储单一数据类型对象的容器,其中每个对象都没有单独的名字,而是通过它在数组中的位置对它进行访问。数组的长度是固定的,数组一经创建,就不允许添加新的元素。Note:数组的维数必须用值大于等于1的常量表达式定义常量表达式只能包含整型字面值常量、枚举常量或者用常量表达式初始化的整型 const 对象。非 const 变量以及要到运行阶段才知道其值的 const 变量都不能用于定义数组的维数。(可能会引起不可预料的错误)数组定义中的类型名可以是内置数据类型或类类型;除引用之外,数组元素的类型还可以是任意的复合类型;没有所有元素都是引用的数组.如果 ...
- 2008-02-12 21:48
- 浏览 5173
- 评论(0)
string 类型支持长度可变的字符串,C++ 标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。#include <string>using std::string; 字符串字面值与标准库 string 类型不是同一种类型。用 iostream 和 string 标准库,使用标 ...
- 2008-02-12 21:35
- 浏览 3093
- 评论(0)
类型是所有程序的基础,类型告诉我们数据代表什么意思以及可以对数据执行哪些操作。类型确定了数据和操作在程序中的意义。 基本内置类型C++ 定义了一组表示整数、浮点数、单个字符和布尔值的算术类型,另外还定义了一种称为 void 的特殊类型。算术类型的存储空间依机器而定,单位:位(bit)C++标准规定了每个算术类型的最小存储空间,但它并不阻止编译器使用更大的存储空间。可以用sizeof()查看//括号中可以是类型,变量,常量甚至字面量,本质应该是类型,是对类型的判断,意为:显示类型需要的内存空间大小,单位:字节 #include <iostream>
using namespace st ...
- 2008-02-12 21:12
- 浏览 3979
- 评论(0)
/*the first C++ program*/
#include <iostream>
using namespace std;
//main function
int main()
{
cout << "Hello world" << endl;
return 0;
} #include <iostream> 预处理指示,包含格式化输入和输出的iostream库using namespace std; 使用 名字空间 标准 #include语句:包含的意思,意为把某个文件插入此处有#in ...
- 2008-02-04 00:15
- 浏览 2921
- 评论(0)
语言:ANSI C++,即标准C++编译和运行环境:红旗 Red Flag Linux 6. 1.配置环境变量,其实就是加个 . (点)表示当前路径 echo $PATH 查看当前环境变量, 注意大写,如果没有点的话,自己手动添加vi .bash_profile 不同的shell配置文件不同,ps命令查看当前shell$PATH=.;$PATH 为环境变量加上当前路径. .bash_profile 使配置文件生效,两个点之间有空格,不同的配置文件生效方法也不一样 2.vi 下编写hello world程序vi HelloWorld.cc Linux下 ...
- 2008-02-03 01:54
- 浏览 3805
- 评论(0)