-
C++教程之类的指针(Pointers to classes)
类的指针(Pointers to classes)
类也是可以有指针的,要定义类的指针,我们只需要认识到,类一旦被定义就成为一种有效的数据类型,因此只需要用类的名字作为指针的名字就可以了。例如:CRectangle * prect;
是一个指向class CRectangle类型的对象的指针。
就像数据机构中的情况一样,要想直接引用一个由指针指向的对象(object)中的成员,需要使用操作符 ->。这里是一个例子,显示了几种可能出现的情况:
// pointer to classes example #include <iostream.h> class CRectangle { int width, height; public: void set_values (int, int); int area (void) {return (width * height);} }; void CRectangle::set_values (int a, int b) { width = a; height = b; } int main () { CRectangle a, *b, *c; CRectangle * d = new CRectangle[2]; b= new CRectangle; c= &a; a.set_values (1,2); b->set_values (3,4); d->set_values (5,6); d[1].set_values (7,8); cout << "a area: " << a.area() << endl; cout << "*b area: " << b->area() << endl; cout << "*c area: " << c->area() << endl; cout << "d[0] area: " << d[0].area() << endl; cout << "d[1] area: " << d[1].area() << endl; return 0; } |
a area: 2 *b area: 12 *c area: 2 d[0] area: 30 d[1] area: 56 |
- *x 读作: pointed by x (由x指向的)
- &x 读作: address of x(x的地址)
- x.y 读作: member y of object x (对象x的成员y)
- (*x).y 读作: member y of object pointed by x(由x指向的对象的成员y)
- x->y 读作: member y of object pointed by x (同上一个等价)
- x[0] 读作: first object pointed by x(由x指向的第一个对象)
- x[1] 读作: second object pointed by x(由x指向的第二个对象)
- x[n] 读作: (n+1)th object pointed by x(由x指向的第n+1个对象)
由关键字struct定义的类
C++ 语言以将C 语言中的关键字struct 扩展到与C++语言中的class 关键字具有基本相同的功能,除了它所有的成员都默认为 public 而不是private。不管怎样,因为 class 和 struct 在C++中几乎具有同样的功能,struct 通常被用在只有数据的结构中,而class 则被用在有过程和成员函数的情况下。
最新更新
Objective-C语法之代码块(block)的使用
VB.NET eBook
Add-in and Automation Development In VB.NET 2003 (F
Add-in and Automation Development In VB.NET 2003 (8
Add-in and Automation Development in VB.NET 2003 (6
Add-in and Automation Development In VB.NET 2003 (5
AddIn Automation Development In VB.NET 2003 (4)
AddIn And Automation Development In VB.NET 2003 (2)
Addin and Automation Development In VB.NET 2003 (3)
AddIn And Automation Development In VB.NET 2003 (1)
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式