当前位置: 首页 > news >正文

有哪些可以做兼职的翻译网站吗东莞市保安公司

有哪些可以做兼职的翻译网站吗,东莞市保安公司,房地产网站建设分析,单词优化和整站优化条款26#xff1a;尽可能延后变量定义式的出现时间当你定义了一个变量#xff0c;如果在使用变量之前出现异常#xff0c;那么你得承受一次构造成本和析构成本#xff0c;而且你没有使用该变量#xff1b;本条款给出的建议是延迟变量的定义#xff0c;直到非得使用该变量…条款26尽可能延后变量定义式的出现时间当你定义了一个变量如果在使用变量之前出现异常那么你得承受一次构造成本和析构成本而且你没有使用该变量本条款给出的建议是延迟变量的定义直到非得使用该变量的前一刻为止甚至应该尝试延后这份定义知道能够给它初值实参为止这样不仅可以避免构造析构非必要的对象还可以避免无意义的default构造行为 条款27尽量少做转型动作常见C风格的类型转换T)expression                 函数风格的转型   T(expression)      //旧式转型C提供的四种新式转型const_castT(expression);//去除对象常量性dynamic_castT(expression);//对象安全向下转型用于继承reinterpret_castT(expression);static_castT(expression);//隐式转型 尽量使用新式转型方式1代码容易辨识2各转型动作的目标比较窄编译器容易诊断转型并不是告诉编译器把某种类型视为另一种类型任何一个类型转换不论是通过转型操作而进行的显式转换或通过编译器完成的隐式转换往往真的令编译器编译出运行期间执行的代码对于一个base class指针指向一个derived class对象有时候上述的两个指针值并不相同它们之间会有一个偏移量在运行期间施加在derived*指针上来得到正确的base*指针值转型代码错误分析 class window{                                       class specialwindow:public window{ public                                               public:virtual void onresize( ){...}                              virtual void onresize( ){ }                                                                                 static_castwindow(*this).onresize( );//解决方法//windowonresize} 原本想着采用static_cast将派生类对象转化为基类对象执行onresize函数然后再执行派生类的onresize函数但实际上是在当前对象的副本上执行了windowonresize在当前对象上执行是specialwindow专属动作个人理解相当于转型可以当做为创建一个副本执行了一次函数调用的过程 对于dynamic_cast:用于你相对一个derived class执行derived class操作函数但是你的手上只有一个指向base的pointer或者reference你只能通过dynamic_cast向下寻找你的derived class对象然而使用dynamic_cast会用到strcmp比较class名称使得运行效率极低改善这个问题的方法有两种1使用容器并在其中存储直接指向derived class对象指针通常是智能指针如此便消除了通过base class接口处理对象的需要但这种情况下你需要多个容器分别储存不同派生类的指针而且每个容器都具备类型安全性具体代码如下 class window {...}; class specialwindow::public window{ public:void blink( ); }; typedef std::vectorstd::trl:shared_ptrspecialwindowvpsw; vpsw winptrs; for(vpsw::iterator iterwinptrs.begin( );iter!winptrs.end( );iter(*it)-blink( );2)通过base class接口处理所有可能之各种window派生类也就是提供virtual函数 条款28:避免返回handles指向对象内部成分对于常见的pimpl设计方法即数据和实现分离有两个需要注意的地方1成员变量的封装性最多等于返回你reference的函数的访问级别2)const成员函数传出来一个reference后者reference所指数据与对象自身有关联而它又被储存于对象之外那么函数调用者可以修改那笔数据绝对不要令成员函数返回一个指针指向访问级别较低的成员函数如果你那么做后者的访问级别就会被提高到较高者因为客户可以去的一个指向访问级别更低的函数然后通过那个指针去调用它如果有一个handle(成员函数返回reference指针或者迭代器被传出去那么就可以用这个handle访问对象的数据对象的封装性也就下降了避免返回handlesreference指针迭代器指向对象内部遵守这个规定可以增加封装性帮助const成员函数更像const并将发生“虚吊号码牌指针或引用指向不存在的对象”的可能性降到最低 条款29:为“异常安全”而努力是值得的当异常抛出时带有异常安全性的函数会1不泄露资源2不允许数据败坏异常安全函数提供一下三个保证中的一个1基本承诺异常被抛出程序内的任何事情仍然保持在有效的状态下没有任何对象或者数据结构会因此而败坏所有对象都处于一种内部前后一致的状态2强烈保证如果异常被抛出程序状态不改变。调用这样的函数需有这样的认知如果函数成功就是完全成功如果函数失败程序会回复到“调用函数之前的状态”调用一个提供强烈保证的函数后程序状态只有两种可能如预期般到达函数成功执行后的状态或者回到函数被调用前的状态。3不抛掷保证承诺不抛掷异常因为它们总能完成它们原先承诺的功能强烈保证往往能够以copy-and-swap实现出来但是强烈保证并非对所有的函数都有实现或者具备现实意义一般基本承诺就可以了函数提供的“异常安全性”通常最高只等于其所调用之各个函数的“异常安全性保证”中的最弱者。 条款31透彻了解inlining的里里外外inlining函数的好处产生较小的目标码调用它们不需要承受函数调用所招致的额外开销缺点是会导致程序体积过大虚内存现象inline造成代码膨胀导致额外的换页行为降低高速缓存器装置的击中率 inline只是对编译器的一个申请不是强制命令编译器可以忽略这项申请可以隐喻提出也可以明确指出加inline关键字。隐喻的方式是将函数定义在class定义式内inline函数通常被放置在头文件中在编译阶段实现对函数本体的替换编译器拒绝将复杂(循环或者递归)、virtual函数函数指针调用的情况下将函数变成inlineinline函数在随着程序库的升级时无法升级同时不支持设置端点调试本身不是函数结论将大多数inline函数限制在小型、被频繁调用的函数身上这可以使得日后调试过程和二进制升级更容易也可以使得潜在的代码膨胀最小化使程序的速度提升最大化不要只因为function templates出现在头文件将它们声明为inline 条款31将文件间的编译依存关系降至最低在设计对象的过程中我们可以将对象分割为两个class,一个只提供接口数据一个负责实现该接口函数实现这就是所谓的pimpl方式这种设计方式的好处是1在修改数据代码时我们只需要修改接口数据就行而不要修改实现2在函数声明时当其中有class时我们只需要声明class而不需要定义class;具体设计策略如下如果使用object reference或者object pointers可以完成任务就不要使用objects;如果能够尽量以class声明式替换class定义式这样可以省去调用构造函数的开销为声明式和定义式提供不同的头文件上述的方法称为handle class 的构造方法常见的handle class的构造方法除了有pimpl方式还有一种特殊的抽象基类interface class这种class的目的是调试derived class 接口因此通常不带成员变量没有构造函数只有一个虚析构函数和一组pure virtual函数如 class person{ publicvirtual ~person( );virtual std::string name( ) const0;virtual std::string birthdata( ) const0;virtual std::string address( )const0; }; interface class自己创建单个对象这样的函数称为factory函数或virtual构造函数它们返回指针智能指针指向动态分配所得对象而该对象支持interface class接口通常函数被声明为static代码如下 class person{ publicstatic std::trl::shared_ptrperson(create(const std::stringname,const Datebirthday,const addressaddr); };Handle class和interface class解除了接口和实现之间的耦合关系从而降低文件间的编译依存性对于handle class成员函数必须通过impl pointer取得对象数据每一次访问就会增加一层间接性同时每一个对象消耗的内存数量必须增加impl pointer的大小最后impl pointer必须初始化指向一个动态分配的impl object因此可能会带来bad alloc异常interface class每次调用只付出一个间接跳跃成本此外派生的interface class中必须含有一个vptr这个指针会增加存放对象所需的内存数量。在程序开发中如果使用handle class和interface class的实现码在速度或大小差异大于类之间的耦合时可以用具体类代替handle class和interface class
http://www.huolong8.cn/news/432496/

相关文章:

  • 移动积分兑换商城官方网站公司官方网站推广策划
  • python做视频点播网站关于网站建设与维护的心得体会
  • 好的h5制作网站模板下载消防网站建设目标
  • 怎么看网站开发者页面wordpress自定页面
  • 莱芜住房和城乡建设厅网站wordpress加入海报功能
  • excel做注册网站厦门网站建设满山红
  • 之梦一个系统做多个网站流量平台排名
  • 推广优化网站排名教程看网站的访问量
  • 代理注册公司网站模版辽宁网站优化
  • 手机网站设计创意说明网站域名空间一年费用是多少钱
  • 网站建设价格费用一份完整的个人简历模板
  • 优质网站建设哪家好凡科网站建设总结
  • 10m网站并发量多媒体教学网站的建设的论文
  • 和动物做的网站标杆建设网站
  • 网站制作需要什么企业网站内容运营
  • 建设银行个人网站网站建设策划案怎么写
  • 自媒体平台排行榜前十名各地持续优化防控措施
  • 企业如何建设免费网站商城模板建站价格
  • 医药网站源代码杭州企业画册设计公司
  • iis网站wordpress登陆手机网站 分辨率
  • 洛阳营销型网站开封做网站公司
  • 塘厦建设网站阜宁网站建设公司
  • 好吊顶网站响应式网站文案
  • 学院网站规划方案北京网络行业协会
  • 招投标中网站建设评分标准网站开发技术文档格式
  • 桂阳局网站建设方案企业电子商务网站建设规划
  • 娱乐网站建设pptwordpress主题技术网
  • 开一间网站建设有限公司动态手机网站怎么做的
  • 做电子商务网站需要什么软件在网站上做广告
  • 制作一个个人网站WordPress连接不上FTP