首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

struct这么声明的好处

2013-07-08 
struct这样声明的好处struct CIndexPosition {CIndexPosition():uIndexColumn(0u),uIndexRow(0u){}CIndexP

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

热点排行