c++如何用好struct的构造函数

来源:互联网 发布:sm抢购软件 编辑:程序博客网 时间:2024/05/21 17:58

    在c与c++中都存在struct类型,用以表示一段数据结构,其中在c++中struct与class几乎完全相同,都存在类内函数已经构造析构函数,因此我们可以在实际开发工作中通过构造函数以及析构函数来对数据进行初始化以及去初始化。

1.如我们要在某个链表尾部,插入某个结构体数据,一般的代码都是如下实现:

m_ptail->next=Ele;Ele->next=m_ptail;m_ptail=Ele;Ele->next=NULL;
我们需要在最后依然要对Ele->next进行赋值为NULL,现在如果我们实现了构造函数的话,如下面的结构体:

typedef struct log{    logLevel level;    char* content;    log*  next;    char aliasName[_LOG_ALIAS_NAME_LEN/4];    log()    {        level=INFO;        content=NULL;        next=NULL;        memset(aliasName,0,_LOG_ALIAS_NAME_LEN/4);    }    ~log()    {        level=INFO;        content=NULL;        next=NULL;        memset(aliasName,0,_LOG_ALIAS_NAME_LEN/4);     }    }log;

分配内存时调用new进行分配会自动调用构造函数,同时会将结构体中的相关变量进行初始化,这样的话结构体中的next就变成了NULL,此举可以有效降低代码编写复杂,以及因为变量赋值遗忘造成的bug.

2.在linux编程中,我们有可能会遇到枷锁的情况,加锁的代码类似如下:

pthread_mutex_lock(m_mutex);....pthread_mutex_unlock(m_mutex);
而如果使用构造函数和析构函数的话,假如结构体是如下实现的

struct {   pthread_mutex_t* m_mutex;     CMutexLock(pthread_mutex_t* pMutex):m_mutex(pMutex){        pthread_mutex_lock(m_mutex);    }   ~CMutexLock(){        pthread_mutex_unlock(m_mutex);        m_mutex=NULL;    }};
我们代码ing的实现就可以这样了:

{    CMutexLock lock(&m_mutex);    .....}
如上代码要比不使用构造函数更加简洁和方便

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 椰子鞋350线开了怎么办 打完篮球小腿肌肉酸痛怎么办 衣服穿少了感冒怎么办 侧手翻翻不过去怎么办 生完孩子胯宽了怎么办 小孩户口性质弄错了怎么办 4岁宝宝咳嗽很厉害怎么办 宝宝深夜咳嗽很厉害怎么办 2岁宝宝发热37.6怎么办 篮球气嘴慢跑气怎么办 4个月宝宝偏胖怎么办 4个月婴儿偏胖怎么办 6岁儿童偏胖怎么办 打篮球撞到头颈椎痛怎么办 血燥热引起的皮肤瘙痒怎么办 坐时间久了屁股疼怎么办 屁股坐久了疼怎么办 屁股坐久了痛怎么办 坐多了屁股痛怎么办 上班坐的屁股痛怎么办 膝关节手术后康复膝盖疼怎么办 上下楼膝关节疼膝盖疼怎么办 跑步后关节疼该怎么办 后滚翻翻不过去怎么办 走太多路小腿疼怎么办 踢毽子以后期盖右腿内彻疼怎么办 大学体育选修课挂了怎么办 当天贴的砖踩了怎么办 刚贴的瓷砖踩了怎么办 长胶底板太轻怎么办 乒乓球拍胶皮不粘了怎么办 乒乓球拍子胶片太滑怎么办 新买的包黏黏的怎么办 卫星锅收不到台怎么办 养殖厂被卫星拍住怎么办 中六卫星无信号怎么办 晒出成片的斑怎么办 太阳晒出胳膊上长斑怎么办 宇航员在太空死后怎么办 太阳暴晒起的斑怎么办 太阳晒出来的斑怎么办