l C++作用域运算符 :
“ ::”主要有2种应用方式。
其一,类与类的成员之间
声明一个类A,类A里声明了一个成员函数void f( ),但没有在类的声明里给出f的定义,
那么在类外定义f时,就要写成void A::f( ),表示这个f( )函数是类A的成员函数。
其二,作用域。
简单分为:全局作用域,局部作用域,语句作用域
作用域优先级:范围越小优先级越高
作用域运算符:"::"
如果希望在局部变量的作用域内使用同名的全局变量,可以在该变量前加上"::","::"称为作用域运算符.
### 构造函数:
构造函数是成员函数的一种,名字 与 类 的名字相同,可以有参数,但是不能有返回值(void也不行)。
其作用是对 对象进行初始化,比如给成员对象赋初始值。
若定义类 时没有写构造函数,则编译器自动生成一个默认的无参的构造函数。
(默认构造函数没有参数,不做任何操作)。
对象生成时,构造函数自动被调用,对象一旦生成,就再也不能在其上执行构造函数。
一个类可以有多个构造函数。
# 为什么需要构造函数?
其执行了必要的初始化操作,不必专门再写初始化函数,亦不必担心忘记书写初始化函数。
什么是构造函数?通俗的讲,在类中,函数名 和 类名 相同的函数称为构造函数。
它的作用是在建立一个对象时,作某些初始化的工作(例如对数据赋予初值),
(仅仅负责创建对象而不做任何赋值操作..疑问?)在一个类中可以有多个构造函数。
如果一个都没有,编译器将为该类产生一个默认的构造函数。
构造函数惟一的语法限制是 它不能指定 返回类型,甚至void 也不行。
不带参数的构造函数 一般形式为
类名 对象名( ) { 函数体 }
带参数的构造函数:不带参数的构造函数,只能以固定不变的值初始化对象。
带参数构造函数的初始化要灵活的多,通过传递给 构造函数 的参数,可以赋予对象 不同的初始值。
一般形式为:构造函数名(形参表);
创建对象使用时:类名 对象名(实参表);
构造函数参数的初始值:构造函数的参数可以有缺省值。
当定义对象时,如果不给出参数,就自动把相应的缺省参数值赋给对象。一般形式为:
构造函数名(参数=缺省值,参数=缺省值,……);析构函数:
当一个类的对象离开作用域时,析构函数将被调用(系统自动调用)。
析构函数的名字和类名一样,不过要在前面加上 ~ 。对一个类来说,只能允许一个析构函数,析构函数不能有参数,
并且也没有返回值。析构函数的作用是完成一个清理工作,如释放从堆中分配的内存。
一个类中可以有多个构造函数,但析构函数只能有一个。对象被析构的顺序,与其建立时的顺序相反,
即后构造的对象先析构。
析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),
系统自动执行析构函数。析构函数往往用来做“清理善后”工作(例如在建立对象时用new开辟了一片内存空间,
应在退出前在析构函数中用delete释放)
新闻热点
疑难解答