为此,C++提供了一个更好的方法,就是利用类的构造函数来初始化类的数据成员。构造函数具有如下几个特点:构造函数名与类名相同,且没有返回值,不能指定函数类型。构造函数通常被声明为公有属性,但它不能像其他成员函数那样被显式地调用,它是在创建对象时被系统自动调用的。例如,可以将例2.1的MyClass类扩展为MyClass2,使其包含两个构造函数:上述类中包含两个构造函数:一个没有参数,另一个有两个参数。......
2023-11-07
1.变量作用域
变量作用域是指变量的有效范围,一个变量只有在其有效范围内才能存取它的值。变量作用域有以下几个级别:
◇块级作用域:变量在一个块(复合语句)内部定义,其有效范围从它定义开始到块结束终止。
◇函数级作用域:变量在一个函数内部定义,其有效范围从它定义开始到函数结束终止。
◇文件级作用域:变量在一个文件中所有函数的外部定义,其有效范围从它定义开始到文件结束终止。
◇程序级作用域:变量在一个程序中定义,其有效范围从它定义开始到程序结束终止。
2.局部变量
作用域在函数级和块级的变量称为局部变量,也就是说,局部变量在一个函数或块内部定义。因此,局部变量只能在定义它的函数体或块内部使用,而不能在其他函数或块内使用这个变量。例如:
有关局部变量的说明如下:
(1)main函数本身也是一个函数,因而在其内部声明的变量仍为局部变量,只能在main函数内部使用,而不能在其他函数中使用。
(2)在不同的函数中可声明具有相同变量名的局部变量,系统会自动进行识别。
(3)形参也是局部变量,其作用域在定义它的函数内。所以形参和该函数体内的变量是不能重名的。
3.全局变量
作用域在程序级或文件级的变量称为全局变量,也就是说,全局变量是在函数外部定义和访问的。全局变量的作用域是从定义该变量的语句位置开始,直至本文件结束。因而全局变量声明后可以被很多函数使用。例如:(www.chuimin.cn)
有关全局变量的说明如下:
(1)全局变量的作用域是从声明该变量的位置开始直到程序结束处。因此,在一个函数内部,可以使用在此函数前定义的全局变量,而不能使用在该函数定义后定义的全局变量。例如上面的例子,main函数和函数f2可以使用全局变量a、b、x、y,而在函数f1内只能使用全局变量x,y。
如果想在定义全局变量的前面使用该变量,而不需要重新定义,就必须使用extern关键字对其加以声明。这种全局变量称为“外部变量”。例如,在以下程序中,虽然全局变量a,b的声明在程序的结尾,但由于被声明为外部变量,因此其作用域应为整个程序:
(2)全局变量的作用域为函数间传递数据提供了一种新的方法。如果在一个程序中,各个函数都要对同一个变量进行处理,就可以将这个变量定义成全局变量。采用这种方式,可以从某个函数内部得到多个计算值。
(3)在一个函数内部,如果一个局部变量和一个全局变量重名,则在局部变量的作用域内,全局变量不起作用。例如:
上述程序的输出结果为8,因为main函数中的局部变量a屏蔽了全局变量a。
4.变量的存储类别
变量的存储类别有两种:auto(动态)和static(静态)。其使用说明如下:
(1)全局变量默认的存储类别为static,一旦定义后就分配存储空间,直到程序运行结束才释放其存储空间。
(2)局部变量默认的存储类别为auto,在遇到其定义后就分配存储空间,一旦退出其有效范围后就释放其存储空间。例如:
程序执行结果为:3,3。两次调用fun的结果是相同的,因为每次调用fun都会重新为局部变量a分配存储空间,当函数执行完毕,都会释放a的空间。
(3)可以用static将局部变量的存储类别指定为static。这样局部static变量在经过不同函数调用之后,也可以保留它们原来的值。例如:
程序执行结果为:3,4。两次调用fun的结果是不相同的,第1次调用fun,为static局部变量a分配存储空间,并置初值2;第2次调用函数fun,原来的a仍是有效的,不会再初始化为2,所以第2次调用fun返回4。static局部变量在整个程序结束才会释放其存储空间。
有关C++程序设计基础教程的文章
为此,C++提供了一个更好的方法,就是利用类的构造函数来初始化类的数据成员。构造函数具有如下几个特点:构造函数名与类名相同,且没有返回值,不能指定函数类型。构造函数通常被声明为公有属性,但它不能像其他成员函数那样被显式地调用,它是在创建对象时被系统自动调用的。例如,可以将例2.1的MyClass类扩展为MyClass2,使其包含两个构造函数:上述类中包含两个构造函数:一个没有参数,另一个有两个参数。......
2023-11-07
程序设计是指设计、编写和调试程序的方法与过程。由于程序是软件的本体,因此软件的质量主要通过程序的质量体现,因此,研究一种切实可行的程序设计方法至关重要。继承是面向对象程序设计方法的一个重要标志,利用继承机制可以大大提高程序的可重用性和可扩充性。......
2023-11-07
C++中,语句默认都是顺序执行,如果碰到选择或循环语句,顺序执行的规则就要改变。C++中的选择控制语句有if语句、if...else语句、if...else if语句和sw itch语句。对于简单的if...else语句,可以使用条件运算符来代替。“语句1”、“语句2”、…使用sw itch语句应注意下列问题:◇整型表达式包括字符型或枚举型表达式。......
2023-11-07
声明函数模板的一般格式如下:template<模板参数表>函数返回值类型函数模板名(形参表)函数模板定义由关键字template开头,表示声明一个模板。模板参数表写在尖括号<>中,参数一般由关键字class或typename后加一个标识符构成。Class和typename的意义相同,表示后面的标识符是一个参数类型,代表一个潜在的标准类型或用户定义的类型。例如,定义max函数模板求两个数中的较大者。如下面的声明是错误的:可以看出,用函数模板比函数重载更方便,程序更简洁。......
2023-11-07
在类声明中,public、private和protected是关键字,称为成员访问限定符,它们分别表示公有、私有和保护的成员访问权限。其他函数不能访问该类的保护数据成员,也不能调用该类的保护成员函数。◇一旦给出了成员访问限定符,它后面的成员都具有这个成员访问权限,直到出现另一个成员访问限定符或类声明结束为止。类的成员函数可以访问类的所有成员,没有任何限制,而类的对象对类的成员的访问是受成员访问控制符制约的。......
2023-11-07
C++的基本数据类型有bool(布尔型)、char(字符型)、int(整型)、float(浮点型)、double。另外,C++中增加了一个布尔类型bool,其值为true(真)或false(假)。浮点数和整数不同的地方是浮点数有小数部分,如12.34。C++提供的5种基本数据类型,其数据的长度和范围会随处理器的类型和编译器类型的不同而异。C++的修饰符有short、long和signed、unsigned。表1.1大多数32位系统内置数据类型范围续表......
2023-11-07
多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。按照绑定进行阶段的不同,可以分为两种不同的绑定方法:静态绑定和动态绑定,这两种绑定过程中分别对应着多态的两种实现方式。有些多态类型,其同名操作的具体对象能够在编译、连接阶段确定,通过静态绑定解决,比如重载、强制和参数多态。包含多态操作对象的确定就是通过动态绑定完成的。分析以下程序的执行结果。......
2023-11-07
类的每一个成员函数都有一个隐含的特殊指针,通常称为this指针,this指针的类型就是成员函数所属的类型。通常不显式使用this指针。this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每个对象都拥有自己的成员函数。this指针一般用于返回当前对象自身。程序的执行结果如下:s1∶n=2s2∶n=1s3∶n=3this指针大量用于运算符重载成员函数设计中,这将在后面详细介绍。......
2023-11-07
相关推荐