类的每一个成员函数都有一个隐含的特殊指针,通常称为this指针,this指针的类型就是成员函数所属的类型。通常不显式使用this指针。this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每个对象都拥有自己的成员函数。this指针一般用于返回当前对象自身。程序的执行结果如下:s1∶n=2s2∶n=1s3∶n=3this指针大量用于运算符重载成员函数设计中,这将在后面详细介绍。......
2023-11-07
(1)指针对象可以被一个具有相同类型的对象初始化。
例如,初始化一个整型指针:
int i=10;
int*ip=&i;
由于ip是一个指针,所以不能将变量i的值直接赋给它,而应将变量i的地址赋给它。符号“&”是一个取地址运算符,它能得到所跟变量的内存地址,所以&i将返回变量i的内存地址。
(2)由另一个同一类型的指针初始化,同一类型的指针之间可以直接赋值。
下面的例子将整型指针ip赋给另一整型指针ip2:
int*ip2=ip;
此时,这两个指针指向同一内存空间,可用图1.8表示。(www.chuimin.cn)
图1.8 指针与指针所指对象
如果程序员想强制赋给指针另一种类型变量的地址,则必须显式进行类型转换。但由于不同类型的数据在内存占据的空间不同,不同类型之间的强制类型转换很可能会导致数据错误,因而读者在使用时要小心。如要将一个整型指针的值赋给浮点数指针,可以采用以下语句:
float*fp=(float)ip;
(3)通过直接分配内存地址得到初值。
下面的例子分配了一块可以存放整数的内存,并把该内存地址赋给了指针(运算符new将在后面详细介绍):
可以给指针变量赋予空值(NULL),这表明它不指向任何一个对象。指针也可以没有类型,或者说类型为void*,这样的指针可以指向任何对象,因而也称为通用指针。C++允许把指向任何一个类型的指针赋给通用指针。而使用通用指针时,也需要显式地指出通用指针所指数据的类型。下面例子使用了通用指针:
运算符“*”可以取得指针变量所指的值,如上例ip指向i,则要取得i的值可以用*ip得到:
可以用如下方式对i赋值:
即*ip是一个左值,它代表指针ip所指的对象,也就是i。
有关C++程序设计基础教程的文章
类的每一个成员函数都有一个隐含的特殊指针,通常称为this指针,this指针的类型就是成员函数所属的类型。通常不显式使用this指针。this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每个对象都拥有自己的成员函数。this指针一般用于返回当前对象自身。程序的执行结果如下:s1∶n=2s2∶n=1s3∶n=3this指针大量用于运算符重载成员函数设计中,这将在后面详细介绍。......
2023-11-07
虚基类的声明是用在指定派生类时,放在派生类名的后面。该指针被称为虚基类指针。解:上述程序中,各类之间构成类层次如图6.14所示,其中虚线表示是虚继承,也就是说,其基类为虚基类。......
2023-11-07
在C++中,数组和指针密切相关,几乎可以互相使用。数组名字可以认为是常量指针,它指向存放数组第一个元素的内存地址。指针可以用于完成任何涉及数组下标的操作。实际上,数组下标表示法在编译期间将转换为指针表示法,所以用指针方式来书写数组下标表达式可以节省编译时间。如果再定义一个字符指针:char*pname=name;则name[i]、*和*具有相同的值,都是数组第i+1个元素的值。分析以下程序的执行结果。......
2023-11-07
程序设计是指设计、编写和调试程序的方法与过程。由于程序是软件的本体,因此软件的质量主要通过程序的质量体现,因此,研究一种切实可行的程序设计方法至关重要。继承是面向对象程序设计方法的一个重要标志,利用继承机制可以大大提高程序的可重用性和可扩充性。......
2023-11-07
数组的每一项都是一个变量,称为数组元素。如果在初始化数组的语句内忽略了数组大小,则数组元素个数就是初始化值的个数。以下初始化形式是合法的:字符数组可以用多个字符或一个字符串初始化,需要注意的是,字符串以空字符NULL结尾,因而也占据一个数组元素的位置。......
2023-11-07
需要注意的是,基类指针虽然获取了派生类对象的地址,但只能访问派生类从基类继承的成员,不能访问派生类中新增的成员,除非对基类指针强制类型转换调用派生类的成员函数。......
2023-11-07
声明函数模板的一般格式如下:template<模板参数表>函数返回值类型函数模板名(形参表)函数模板定义由关键字template开头,表示声明一个模板。模板参数表写在尖括号<>中,参数一般由关键字class或typename后加一个标识符构成。Class和typename的意义相同,表示后面的标识符是一个参数类型,代表一个潜在的标准类型或用户定义的类型。例如,定义max函数模板求两个数中的较大者。如下面的声明是错误的:可以看出,用函数模板比函数重载更方便,程序更简洁。......
2023-11-07
在类声明中,public、private和protected是关键字,称为成员访问限定符,它们分别表示公有、私有和保护的成员访问权限。其他函数不能访问该类的保护数据成员,也不能调用该类的保护成员函数。◇一旦给出了成员访问限定符,它后面的成员都具有这个成员访问权限,直到出现另一个成员访问限定符或类声明结束为止。类的成员函数可以访问类的所有成员,没有任何限制,而类的对象对类的成员的访问是受成员访问控制符制约的。......
2023-11-07
相关推荐