结构的浅拷贝验证

来源:互联网 发布:出国推荐信 知乎 编辑:程序博客网 时间:2024/04/28 12:09

看见开源软件中 将两个结构直接赋值,做个试验,验证一下。

指针肯定是参考,我想看一下,如果是字符数组,是否可以通过浅拷贝赋值过来。

我以前习惯显式的拷贝结构值。 e.g. memcpy(...)

void fnTest(){    typedef struct _tagTestInfo    {        char cVal;        int iVal;        UINT uVal;        long lVal;        ULONG ulVal;        WCHAR cBuf[MAX_PATH];        _tagTestInfo * pInfo;        _tagTestInfo()        {            cVal = -1;            iVal = -1;            uVal = -1;            lVal = -1;            ulVal = -1;            _tcscpy_s(cBuf, sizeof(cBuf) / sizeof(WCHAR), L"unknow\0");            pInfo = this;        }    }TAG_TEST_INFO;    TAG_TEST_INFO InfoA;    TAG_TEST_INFO InfoB;    InfoB.lVal = 6789;    _tcscpy_s(InfoB.cBuf, sizeof(InfoB.cBuf) / sizeof(WCHAR), L"i'm from InfoB\r\n");    InfoA = InfoB;}


通过试验,可以看到:

当StructB被浅拷贝到StructA时

* 结构中的数组,是可以通过浅拷贝赋值的

* 指针类型变量,还是指向被拷贝的对象. 如果类或结构中有指针类型的变量,需要通过方法进行显式拷贝.


0 0
原创粉丝点击