C++类的标准格式
//pkt.h
#include<string>`
class pkt
{
private:
/* data */
int seq;//the sequence number of pkt
int send_time;//the send time of pkt
bool delay;//indicate the last pkt delay or not
public:
pkt(/* args */);
~pkt();
bool send(int send_time, bool delay);
};
pkt::pkt(/* args */)
{
}
pkt::~pkt()
{
}
以上是一个标准的类声明,对于分界线以上的内容,该部分内容为类声明,包括了名称(pkt), private的数据类型(int seq等),public的构造函数(pkt()),析构函数(~pkt()),以及编程者自定义的bool send()函数。要注意到的是构造函数和析构函数是类中不能缺少的函数,对于构造函数而言,当用户未自定义如何构造时,编译器会默认产生一个构造函数。构造函数、析构函数部分后续可能会多讲一点。本节主要内容为展示如何声明一个类函数,private成员,public成员和protect成员(protect成员目前还没怎么遇到,先略过)。
对于private成员,这一类成员是被类“藏起来”了的成员,外部函数是不能直接访问的,但是可以通过调用public成员函数来对private成员进行查看或者修改(实际上还是public成员在对private成员进行操作)。这一设定保证了面向对象编程所具有的封装+数据隐藏特性。另外,书中还提到了友元函数也可以访问private成员,后续如果有使用那么也将对其进行解释。
对于public成员,这一类成员是被暴露在外的接口,对于一个项目而言,我们设置了一个封装类,那么我们一定是需要利用这个类达到某种目的的。比如上面我们设置了一个pkt类,我们为他设置了包序号,发送时间,是否延迟等属性,那么不难猜出我们要利用这个类实现包的发送。通过调用public暴露在外的函数send,我们便能够实现发送功能,而public并不受访问限制,也就是说他能被pkt类之外的函数调用。
除此之外还有一点需要提及:从声明的格式来看class和struct会有一些相似性,不过我们需要注意到class对于变量是默认设置为private的(所以private关键字可以省略,但是写出来会更清晰),而struct则是默认为public。

浙公网安备 33010602011771号