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

免费送衣服在哪个网站做广州建站公司网站

免费送衣服在哪个网站做,广州建站公司网站,公司起名字大全免费3个字,wordpress 窗口来源#xff1a;http://www.cnblogs.com/qiaozhoulin/p/5227673.html “如何产生一个不能被继承的类”#xff0c;这道题我反反复复只想到#xff0c;将父类的构造函数私有#xff0c;让子类不能调用#xff0c;最后归结出一个单例模式#xff0c;但面试官说#xff0c;…来源http://www.cnblogs.com/qiaozhoulin/p/5227673.html “如何产生一个不能被继承的类”这道题我反反复复只想到将父类的构造函数私有让子类不能调用最后归结出一个单例模式但面试官说单例模式作为此题的解答不够灵活后来面试官提示说可以用友元虚继承可以完美实现这样一个类 当然那时我还不太明白友元与虚继承我都极少接触过只是知道有这些东西回头搜了一下“不能被继承的类”的做法具体如下 1声明一个类CNoHeritance构造函数为private并声明友元类CParent 2让CParent虚继承CNoHeritance 这样CParent就成为一个可以被正常实例化但又不能被继承的类 吴总当时评价说“呵呵虚继承感觉完全是黑科技啊” 这个黑科技真是戳中我笑点但想到C经常有些奇妙的东西现在想总结一下 1C构造函数的黑科技 对于阅读过进阶C书籍的都该知道编译器会在“需要”的时候那么什么是需要的时候呢四种情况 1“带有Default Constructor”的Member Class Object2“带有Default Constructor”的Base Class3“带有至少一个Virtual Function”的Class4“带有一个Virtual Base Class”的Class 自动合成的构造函数往往都是public在派生类中它的构造函数是可以被使用的即派生类不会因此受到限制。 那么如何能使派生类不能使用基类的函数或成员呢 private只能由1该类中的函数2其友元函数访问protected可以被1该类中的函数2其友元函数3派生类子类的函数访问public可以被1该类中的函数2其友元函数3子类的函数4该类的对象访问 如果一个类的构造函数声明为private则其派生类甚至该类的对象都不能访问意味着两点 1该类不能被继承2该类不能由系统实例化即它实例化的对象不会在栈内存上 那么怎么使用该类呢一般而言会通过该类的函数来创建class A { private:A(){} public:A createA(){A* pnew A();return *p;} }; 然而这样又引申一个问题类没有实例化如何能使用其成员函数呢 答案是将该成员函数声明为static这样不需要实例化即可访问即将上述改为class A { private:A(){} public:static A createA(){A* pnew A();return *p;} };A ObjectA::createA(); 很明显上面的实例化过程很不方便简直是艰辛呀单例模式的其中一种实现就是如此在此先不讲。这样实现的类不能被继承但自己也不好过 so如果用友元来实现是怎么实现的呢 声明一个类及其友元class A { private:A(){}friend class B; }; 那么B是可以调用A的private的构造函数的那么让B虚继承A会发生什么事呢 由《深度探索C对象模型》看到B内存中将有一份A类的实体调用A的构造函数构造的这对于友元类B是可行的class A { private:A(){}friend class B; };class B : virtual A { }; 那么这样的B能不能被继承呢假设有个类继承了B如下class A { private:A(){}friend class B; };class B : virtual A { };class C : B { }; 考虑到虚继承的特性C也将调用A的构造函数构造出一个A但C并不是A的友元类所以根本不能执行A私有的构造函数这段程序如果不实例化C编译器不会报错但一旦实例化C则将报错。 而B是可以正常实例化的一个类这样就完美实现了一个不能被继承的类B 2C构造函数初始化列表的黑科技 相比于构造函数的各种trickC的初始化列表就显得很容易了只有那么一点要注意 C的初始化列表的赋值顺序是与C类里面成员变量的声明顺序相关与初始化列表里的顺序无关 举个例子以下就会出现莫名错误class A { public:A(int _x, int _y):y(_y), x(y){} public:int x;int y; }; 根据声明顺序在初始化列表中是先完成x(y)这个步骤但此时y并没有被赋值所以得到的x是个随机的值。 3C虚函数的黑科技 C虚函数的问题几乎是面试必问实际上需要了解的东西也挺多我自己在前几次面试都有些理解有误的地方或者理解不够完善 这里总结几点吧以下类都是针对有虚函数的类 1每个类都有虚函数表这个虚函数表是在编译阶段构建在代码段产生一个vtbl2每次实例化的时候构造函数在前几个字节产生一个指向虚函数表的指针指向代码段的那个虚函数表3虚函数的实现与调整是通过移动或变换虚函数表的指针来实现的。4纯虚函数是指只声明但未被实现的虚函数具有纯虚函数的类不能被实例化为抽象类 4C拷贝构造函数的黑科技 C的拷贝构造函数是C默认的四个函数之一构造函数、析构函数、赋值函数、拷贝构造函数 拷贝构造函数是一种特别的构造函数在《深度探索C对象模型》书中说有三种情况会导致拷贝构造函数被触发 1以一个object的内容作为另一个class object的初始值 class X {...} X x; X xxx; 2当object被当作参数传递给某个函数时 void foo(X x); X xx; foo(xx); 3函数传回一个class object的时候 X foo_bar() {X xx;// ...return xx; } 一般情况下如果没有提供explicit copy constructor时会发生什么呢 一个良好的编译器可以为大部分class objects产生bitwise copies因为它们有bitwise semantics... 这里说的很神奇好像我们不需要自己写copy constructor也没问题一样实际上bitwise copies在有些情况下是非常不推崇的 首先解释下什么是bitwise copies这是指在拷贝过来的时候把class的内存直接位拷贝过来即可以看成是内存拷贝对应的有值拷贝 位拷贝有很多问题典型的一个如果class里面含有分配内存的指针那么它会将指针指向的地址直接拷贝过来class A { public:int *p; };int main() {A a1;a1.pnew int[10];A a2a1;cout a1.p endl;cout a2.p endl;return 0; } 这里可以发现a1.p的地址与a2.p的地址是一样的那么我分配的内存该由哪个释放呢我释放了另一个怎么办呢 实际上这种拷贝方式在STL的string里面肯定是要重写的不能用位拷贝。 《深度探索C对象模型》中说class不展现出“bitwise copy semantics”有四种情况 1当class含有member object并且后者有一个copy constructor声明或合成2当class继承一个base class 而后者存在一个copy constructor的时候3当class声明了一个或多个virtual functions时4当class派生自一个继承串链其中有一个或多个virtual base classes时 其实主要都是担心指针在bitwise semantics下随便复制可能会导致不可预料的错误 在这里说一下赋值函数与拷贝构造函数在触发上的区别 当一个object从无到有时触发的一定是拷贝构造函数赋值函数只会在已有的object赋值时才会触发 5C虚继承的黑科技 针对虚继承可以坦承的一点就是 所有简单的东西遇到虚继承似乎都要单独拿出来讨论
http://www.zqtcl.cn/news/394667/

相关文章:

  • 品牌网站建设 磐石网络官方网站网络科技公司 网站建设
  • 厦门启明星网站建设学校网站模板 中文
  • 高端手机网站平台深圳网上申请个人营业执照
  • 沈阳怎么做网站西亚网站建设科技
  • 做外贸免费的网站有哪些专业简历制作
  • 园林景观设计网站推荐国内wordpress主题
  • 一流的免费网站建设摄影网站源码
  • 深圳高端网站设计公司怎样开发手机网站建设
  • 做网站需要用c语言吗新闻热点
  • 做网站需要交维护费么网站建设详细合同范本
  • 网站运营需要做什么静态网站作品
  • 如何做旅游休闲网站苍南做网站
  • wordpress jp theme关键词排名优化公司成都
  • Soho外贸常用网站wordpress下不了插件吗
  • 企业网站建设小技巧有哪些WordPress网站小程序
  • 公司招聘网站续费申请seo编辑是干什么的
  • 58同城泉州网站建设人工投票平台app
  • dede 网站地图 插件网站引导页flash
  • 聊城做网站的公司渠道网站总体结构
  • 北京比较大的网站建设公司wap网站引导页特效
  • 做关于植物的网站即墨网站设计
  • 怎么提升网站收录商品网页制作
  • 做网站建设的平台wordpress5.0发布
  • 站长工具a级查网站域名
  • 免费做网站电话手机开发者模式打开有什么影响
  • 上海免费网站建站模板毕节做网站优化
  • 影响网站建设的关键点手机网站制作app
  • 商务网站建设的流程深圳模板网站建设案例
  • 做中英文网站多少钱方维制网站
  • 做一个信息发布网站要多少钱开发小程序多少钱一个