拷贝构造函数和赋值构造函数调用次序

class CPrintElement
{
public:
 KC_PRINT_TYPE kptType; ///< 要打印的元素类型
 bool   bHasPrint;  ///< 是否打印过;初始时表示是否用来重新计算高度
 char   chFontName[32];///< 元素字体的名称
 int    iPointSize;  ///< 元素字体的尺寸,已经乘过10

 void   *ptr;    ///< 元素的指针
 char   **chEleName;///< 元素名称的指针数组
 int    iLeftSep;  ///< 相对于左边的相对位置
 int    iTopSep;  ///< 相对于上一个元素的间隔
 int    iCurItem;  ///< 对于要打印多个项的元素,断页时的正在打印的项

 int    *piWidth;  ///< 元素的宽度和高度
 int    *piHeight;  ///<
 int    *piFormat;  ///< 元素的对齐方式
public:
 CPrintElement();
 CPrintElement(const CPrintElement &temp);
 virtual ~CPrintElement();
 CPrintElement& operator =(const CPrintElement &temp);

 void DeleteMem();
 void InitialElement(CWnd *pWnd, KC_PRINT_TYPE printType, CString strContent,
  int &iLastEleRight, int &iLastEleBottom);
};

 

CPrintElement::CPrintElement(const CPrintElement& temp){}

 

CPrintElement& CPrintElement::operator =(const CPrintElement& temp){ return *this;}

 

int main()

{

    CPrintElement ele1; // 调用构造函数

    elel1.InitialElement(.....);

 

    CPrintElement ele2=ele1; // ele2对象不存在,所以调用拷贝构造函数,进行构造过程

    ele2.InitialElement(...);

 

    elel2=ele1; // ele2对象已经存在,进行赋值构造函数

}

 

调用次序如下:

 构造函数

拷贝构造函数

赋值构造函数

析构函数

析构函数

你可能感兴趣的:(拷贝构造函数和赋值构造函数调用次序)