C++类的设计~

一个C++类中有个char*,或者LPCSTR类型,或者其他的指针变量,在构造函数阶段应该在类中管理好它们指向的内存,不能直接用赋值的方式,因为从外面传进来的地址所指向的值很可能变掉,导致你所要的值被修改。代码如下:

class EXT_CLASS GeoImg

{

...............

...............

public:
 LPCSTR m_strPath;//图像的完整路径
 double m_dCenterPosX,m_dCenterPosY;//图像的中心位置
 double m_dRotate;//旋转角度
 double m_dResX,m_dResY;//图像分辨率

}

GeoImg::GeoImg(LPCSTR strPath,double dCenterPosX,double dCenterPosY,double dRotate,
  double dResX,double dResY)
{
 m_strPath = strPath;  //此处指针所指的值可能改变了
 m_dCenterPosX = dCenterPosX;
 m_dCenterPosY = dCenterPosY;
 m_dRotate = dRotate;
 m_dResX = dResX;
 m_dResY = dResY;
 m_bAttach = FALSE;
}

在上面的m_strPath如果你外面传进来的是栈地址,在函数返回时栈的空间就没了,如果是堆地址,不方便对它的释放,所以在类里面进行内存管理是最好的~~当然,直接用CString更方便,比较是在构造的时候是深拷贝的·~

你可能感兴趣的:(C++,c,ext,Class)