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
- c++如何用好struct的构造函数
- 有关struct的构造函数
- 有关struct的构造函数
- 由struct的静态构造函数说起
- 由struct的静态构造函数说起
- struct的初始化及其构造函数
- 由struct的静态构造函数说起
- struct的初始化及其构造函数
- struct的初始化及其构造函数
- struct构造函数
- c++ struct 构造函数
- struct构造函数
- struct构造函数
- 如何用好FIREFOX的XYZProxy
- 如何用好SVN的Branch
- 【c++】实验说明“转换构造函数”是如何转换的
- C++之struct构造函数
- C# struct构造函数限制
- mysql远程访问
- Android下常见的内存泄露 经典
- 【数据结构】静态查找之顺序查找
- iOS和Android设计理念的演变
- 交通灯管理系统
- c++如何用好struct的构造函数
- PowerDesigner连接oracle数据库时出现由于系统错误 1114 (oracle in oradb11g_home1)指定驱动程序无法加载 sqlstate=IM003
- mysql语句总结
- 几种常用DB驱动和DB连接串,方便大家用各种程序,连接数据库。
- 解决ibatis Dao层实现类无法正常使用注解方式
- spring @Value加载配置值
- NYOJ-括号配对问题
- 字符串解析
- 多线程使用时间函数