《Essential C++》笔记五、基于对象的编程风格

本文介绍了C++中的对象编程关键概念,包括构造函数的初始化、成员初始化表的使用、析构函数的作用,以及const成员函数、mutable关键字、this指针、静态成员和友元等特性。还探讨了迭代器实现和typedef的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

²  构造函数:提供的一个或多个特别的初始化函数

构造函数的名称必须与class的名称相同。语法规定,构造函数不应指定返回型别,亦不需要返回任何值。它可以被重载。传参见P105

²  成员初始化表

Triangular::Triangular( const Triangular &rhs )

: _length ( rhs._length ),

 _beg_pos (ths._beg_pos ), _next ( rhs._beg_pos-1 )

{ }

成员初始化表紧跟在参数表后面的冒号后,以逗号分隔,欲赋值给成员的数值被放于成员后的小括号中。

²  析构函数是用户自定义的一个classmember。一旦某个类提供了析构函数,当其objects结束生命时,便会自动调用析构函数处理善后。析构函数主要用来释放在构造函数或对象生命周期中的配置资源。

析构函数的名称有严格规定:class名称再加上'~'前导符号。它绝对不会有返回值,也没有任何参数。由于其参数表是空的,所以也绝对不可能被重载。

²  const修饰词紧接于函数参数表之后,凡是在class主体以外的定义者,如果它是一个const member function,那就必须同时在声明式与定义式中都指定const

²  将类中的参数定义为mutable,可视为对该参数的改变不会破坏该对象的常数性

²  this指针在member function内用来寻址其调用者(一个对象)。编译器自动将this指针加到每一个member function的参数表中。

²  静态类成员:staticdata member用来表示唯一一份可共享的members。它可以在同型的所有对象中被存取。

²  静态成员函数:staticmember function,可以在“与任何对象都无瓜葛”的情形下被调用。注意,member function只有在“不存取任何non-static members”的条件下才能够被声明为static,声明方式是在声明式之前加上static

²  实现iteratorclass:我们采用像定义member function那样的形式来定义运算符。运算符函数看起来很像普通函数,唯一的不同在于它不需要制定名称,只需在运算符符号之前加上关键词operator即可:

Triangular_iterator &operator++();

²  typedef可以为某个型别设定另一个不同的名称,其通用形式为:

typedef existing_name new_name;

²  友元friend:具备了与classmumber function相同的存取权限,可以存取class的private member。为了让operator*()通过编译,不论Triangular或Triangular_iterator都需要将operator*()声明为“友元”:

friend int operator*( const Triangular_iterator&rhs );

我们也可以令类A和类B建立友元关系,借此让类A的所有成员函数都成为类B的朋友:

class Trigular {

         friendclass Tgriangular_iterator;

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值