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。

posted @ 2024-04-24 21:41  wxlu  阅读(43)  评论(0)    收藏  举报