当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

《深度摸索C++对象模子》读书笔记(6)[VC/C++编程]

赞助商链接



  本文“《深度摸索C++对象模子》读书笔记(6)[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

***对象的构造和解构***

普通而言,我们会把object尽大概安排在利用它的那个程序区段四周,这样做可以节俭不必要的对象 产生操作和销毁操作.

***全局对象***

全局对象的静态初始化战略包含以下几个步骤:

(1)为每一个需求静态初始化的对象产生一个_sti_……()函数,内含必要的 constructor调用操作或inline expansions;

(2)为每一个需求静态的内存释放操作的对象产生一个_std_……()函数,内含必要 的destructor调用操作或inline expansions;

(3)在main()函数的首尾辨别增添一个_main()函数(用以调用可履行文件中的全部_sti()函 数)和一个_exit()函数(用以调用可履行文件中的全部_std()函数).

倡议根本不要用那些需求静态初始化的全局对象.

***部分静态对象***

假定我们有以下程序片段:

const Matrix& identity() {
static Matrix mat_identity;
// ...
return mat_identity;
}

此处的local static class object保证了以下语意:

(a)mat_identity的constructor必须只能施行一次,固然上述函数大概会被调用多次;

(b)mat_identity的destructor必须只能施行一次,固然上述函数大概会被调用多次.

编译器的实际做法以下:在第一次调用identity()时把mat_identity构造出来,而在与呼应文件关 联的静态内存释放函数中将其解构.(部分静态对象的地址在downstream component中将会被转换到程 序内用来安排global object的data segment中)

***对象数组***

假如你想要在程序中取出一个constructor的地址,这是不可以的.但是经过一个指针来激活 constructor,将无法存取default argument values.那么,若何支持以下的语句:

complex::complex(double=0.0, double=0.0);

当程序员写出:

complex c_array[10];

时,编译器终究需求调用:

vec_new(&c_array,sizeof(complex),10,&complex::complex,0);

为了办理这个问题,可由编译器产生一个内部的constructor,没有参数,在其函数内调用由程序员 供应的constructor,并将default参数值明确地指定过去:

complex::complex()
{
complex(0.0, 0.0);
}


  以上是“《深度摸索C++对象模子》读书笔记(6)[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 《深度摸索C++对象模子》读书笔记(1)
  • 《深度摸索C++对象模子》读书笔记(2)
  • <b>《深度摸索C++对象模子》读书笔记(3)</b>
  • 《深度摸索C++对象模子》读书笔记(4)
  • 《深度摸索C++对象模子》读书笔记(5)
  • 《深度摸索C++对象模子》读书笔记(6)
  • <b>《深度摸索C++对象模子》读书笔记(7)</b>
  • <b>《深度摸索C++对象模子》读书笔记 最后一记</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .