读书人

struct这么声明的好处

发布时间: 2013-07-08 14:13:00 作者: rapoo

struct这样声明的好处
struct CIndexPosition
{
CIndexPosition()
:uIndexColumn(0u)
,uIndexRow(0u)
{}

CIndexPosition(UINT uCol, UINT uRow)
:uIndexColumn(uCol)
,uIndexRow(uRow)
{}

UINT uIndexColumn;
UINT uIndexRow;
};

1)这样写的好处是什么,难道是可以给初始值吗,还是初始值赋值方便?
c++
[解决办法]
给初始值,这样做是做好的了。当让你在你的构造函数中实现也一样,但以防有时候就先调用了你的成员数据(未先初始化),利用初始化列表是个很好的选择。
[解决办法]
是的,构造函数,可以给初始值,而且比自己在构造函数或者外面手动赋值快。
[解决办法]
struct 其实和类class就一个默认是public和private的区别,这样写,在声明结构体变量时候,结构里面的变量会被初始化,你上面是定义了默认构造函数和带形参的构造函数。
提供一个比较全面的结构体定义例子


// 目录信息
typedef struct tagTome
{
DWORD dwID;
CString strTomeName;
vector<DWORD> vecChapID;
BOOL bExpand;
vector<tagTome*> vecTome;
PROPERTY stProperty;
vector<DWORD> vecNodeId;
//构造
tagTome()
{
vecChapID.clear();
bExpand = TRUE;
vecTome.clear();

}

//拷贝
tagTome& operator = ( const tagTome& data )
{
if ( this != &data )


{
dwID = data.dwID;
strTomeName = data.strTomeName;
vecChapID = data.vecChapID;
bExpand = data.bExpand;
stProperty = data.stProperty;
vecNodeId = data.vecNodeId;
}
return *this;
}
//析构
~tagTome()
{
vecChapID.clear();
for (int i=0;i < (int)vecTome.size();i++)
{
tagTome* pTome = vecTome.at(i);
if (pTome != NULL)
{
delete pTome;
pTome = NULL;
}
}
}
}TOME, *PTOME

读书人网 >C++

热点推荐