c++指针随笔1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++指针随笔1相关的知识,希望对你有一定的参考价值。

#include "stdafx.h"
#include <iostream>
#include <map>
using namespace std;
using std::map;

class CA;
typedef map<int,CA*> MAP;


class CA {
public:
    int a;
};

int _tmain(int argc, _TCHAR* argv[])
{
    MAP map;
    for(int i=0;i<2;i++)
    {
        CA* pA = new CA;
        pA->a = 1;
        map[i] = pA;
    }

    MAP::iterator it = map.begin();
    while(it != map.end())
    {
        CA* pA = it->second;
         delete pA;   
         pA = NULL;    //pA地址问NULL,但是 it->second的地址不为NULL;因此如果没有进行erase的话,严格意义来讲应该开启下面这句话,避免map内部无法准确的使用空值判断;
//        it->second = NULL;
        it ++;
    }


    it = map.begin();
    while(it != map.end())
    {
        CA* pA = it->second;
        int a = 0;
        it ++;
    }

    return 0;
}


/*
这里复习一下c++的一些概念:
*pA        就是指针pA所指地址上的数据
pA        就是该指针所指的地址,这个也就是为什么pA=NULL,it->second 不为NULL
&pA        表示该指针的地址
*/

以上是关于c++指针随笔1的主要内容,如果未能解决你的问题,请参考以下文章

c++指针数组与二维数组的最大区别

C++指针的算术运算 关系运算

c复习过程随笔八

图片数据随笔

(转)Delphi2009初体验 - 语言篇 - 智能指针(Smart Pointer)的实现

C++指针