范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

C面向对象(3)

  模板类是在什么时候实现的
  模板实例化 :模板的实例化分为显示实例化和隐式实例化。
  模板具体化: 当模板使用某种类型类型实例化后生成的类或函数不能满足需要时,可以考虑对模板进行具体化。 具体化时可以修改原模板的定义 ,当使用该类型时,按照具体化后的定义实现, 具体化相当于对某种类型进行特殊处理 。
  示例:#include  using namespace std;  // #1 模板定义 template struct TemplateStruct {     TemplateStruct()     {         cout << sizeof(T) << endl;     } };  // #2 模板显示实例化 template struct TemplateStruct;  // #3 模板具体化 template<> struct TemplateStruct {     TemplateStruct() {         cout << "--8--" << endl;     } };  int main() {     TemplateStruct intStruct;     TemplateStruct doubleStruct;      // #4 模板隐式实例化     TemplateStruct llStruct; }
  运行结果 4 --8-- 1说说类继承时,派生类对不同关键字修饰的基类方法的访问权限
  类中的成员可以分为三种类型,分别为 public成员 、 protected成员 、 public成员 。 类中可以直接访问自己类的public、protected、private成员 , 但类对象只能访问自己类的public成员 。
  public继承
  派生类可以访问基类的public、protected成员,不可以访问基类的private成员; 派生类对象可以访问基类的public成员,不可以访问基类的protected、private成员
  protected继承
  派生类可以访问基类的public、protected成员,不可以访问基类的private成员; 派生类对象不可以访问基类的public、protected、private成员。
  private继承
  派生类可以访问基类的public、protected成员,不可以访问基类的private成员; 派生类对象不可以访问基类的public、protected、private成员。 简述一下移动构造函数,什么库用到了这个函数?
  C++11中新增了 移动构造函数 。与拷贝类似,移动也使用一个 对象的值设置另一个对象的值 。与拷贝不同的是,移动实现的是对象值真实的转移(源对象到目的对象),即, 源对象将丢失其内容,其内容将被目的对象占有。
  移动操作的发生的时候,是当 移动值的对象是未命名的对象的时候 。这里未命名的对象就是那些临时变量,甚至都不会有名称。典型的未命名对象就是 函数的返回值 或者 类型转换 的对象。 使用临时对象的值初始化另一个对象值 ,不会要求对对象的复制:因为临时对象不会有其它使用,因而,它的值可以 被移动到目的对象 。做到这些,就要使用移动构造函数和移动赋值: 当使用一个临时变量对对象进行构造初始化的时候,调用移动构造函数 。类似的,使用 未命名的变量的值赋给一个对象时,调用移动赋值操作 。
  移动操作的概念对对象管理它们使用的存储空间很有用的 ,诸如对象使用new和delete分配内存的时候。在这类对象中,拷贝和移动是不同的操作:从A拷贝到B意味着,B分配了新内存,A的整个内容被拷贝到为B分配的新内存上。 而从A移动到B意味着分配给A的内存转移给了B,没有分配新的内存,它仅仅包含简单地拷贝指针。
  示例:// 移动构造函数和赋值 #include  #include  using namespace std;  class Example6 {     string* ptr; public:     Example6 (const string& str) : ptr(new string(str)) {}     ~Example6 () {delete ptr;}     // 移动构造函数,参数x不能是const Pointer&& x,     // 因为要改变x的成员数据的值;     // C++98不支持,C++0x(C++11)支持     Example6 (Example6&& x) : ptr(x.ptr)      {         x.ptr = nullptr;     }     // move assignment     Example6& operator= (Example6&& x)      {         delete ptr;          ptr = x.ptr;         x.ptr=nullptr;         return *this;     }     // access content:     const string& content() const {return *ptr;}     // addition:     Example6 operator+(const Example6& rhs)      {         return Example6(content()+rhs.content());     } }; int main () {     Example6 foo("Exam");           // 构造函数     // Example6 bar = Example6("ple"); // 拷贝构造函数     Example6 bar(move(foo));     // 移动构造函数                                 // 调用move之后,foo变为一个右值引用变量,                                 // 此时,foo所指向的字符串已经被"掏空",                                 // 所以此时不能再调用foo     bar = bar+ bar;             // 移动赋值,在这儿"="号右边的加法操作,                                 // 产生一个临时值,即一个右值                                  // 所以此时调用移动赋值语句     cout << "foo"s content: " << foo.content() << " ";     return 0; }
  执行结果 foo"s content: Example请你回答一下 C++ 类内可以定义引用数据成员吗?
  c++类内可以定义引用成员变量,但要遵循以下三个规则: 不能用默认构造函数初始化 ,必须提供构造函数来初始化引用成员变量。否则会造成引用未初始化错误。 构造函数的形参也必须是引用类型 。 不能在构造函数里初始化, 必须在初始化列表中进行初始化 。 简述一下什么是常函数,有什么作用
  类的成员函数后面加 const ,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。
  在设计类的时候, 一个原则就是对于不改变数据成员的成员函数都要在后面加const,而对于改变数据成员的成员函数不能加 const 。所以 const 关键字对成员函数的行为作了更明确的限定:有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员。
  没有 const 修饰的成员函数,对数据成员则是可读可写的。除此之外,在类的成员函数后面加 const 还有什么好处呢?那就是 常量(即 const)对象可以调用 const 成员函数,而不能调用非const修饰的函数 。正如非const类型的数据可以给const类型的变量赋值一样,反之则不成立。
  示例 #include using namespace std;   class CStu { public:     int a;     CStu()     {         a = 12;     }       void Show() const     {         //a = 13; //常函数不能修改数据成员         cout <

说说什么是虚继承,解决什么问题,如何实现?

虚继承是解决C++多重继承问题的一种手段,从不同途径继承来的同一基类,会在子类中存在多份拷贝。

这将存在两个问题:其一,浪费存储空间;第二,存在二义性问题,通常可以将派生类对象的地址赋值给基类对象,实现的具体方式是,将基类指针指向继承类(继承类有基类的拷贝)中的基类对象的地址,但是多重继承可能存在一个基类的多份拷贝,这就出现了二义性。虚继承可以解决多种继承前面提到的两个问题

#include using namespace std; class A{ public:     int _a; }; class B :virtual public A { public:     int _b; }; class C :virtual public A { public:     int _c; }; class D :public B, public C { public:     int _d; }; //菱形继承和菱形虚继承的对象模型 int main() {     D d;     d.B::_a = 1;     d.C::_a = 2;     d._b = 3;     d._c = 4;     d._d = 5;     cout << sizeof(D) << endl;     return 0; }
  菱形继承中A在B,C,D,中各有一份,虚继承中,A共享。
  上面的虚继承表实际上是一个指针数组。B、C实际上是虚基表指针,指向虚基表。
  虚基表:存放相对偏移量,用来找虚基类。 简述一下虚函数和纯虚函数,以及实现原理C++中的 虚函数 的作用主要是实现了 多态的机制 。关于多态,简而言之就是用 父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数 。这种技术可以让父类的指针有"多种形态",这是一种泛型技术。 如果调用非虚函数,则无论实际对象是什么类型,都执行基类类型所定义的函数。 非虚函数总是在 编译时根据调用该函数的对象,引用或指针的类型而确定 。如果调用虚函数,则直到运行时才能确定调用哪个函数,运行的虚函数是引用所绑定或指针所指向的对象所属类型定义的版本。 虚函数必须是基类的非静态成员函数 。虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,可以在基类的派生类中对虚函数重新定义,在 派生类中重新定义的函数应与虚函数具有相同的形参个数和形参类型 。 以实现统一的接口,不同定义过程 。如果在派生类中没有对虚函数重新定义,则它继承其基类的虚函数。
  实列 class Person{     public:         //虚函数         virtual void GetName(){             cout<<"PersonName:xiaosi"<GetName();//StudentName:xiaosi }
  虚函数 (Virtual Function)是通过一张 虚函数表(Virtual Table) 来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法 。在基类中实现纯虚函数的方法是在函数原型后加 "=0" virtualvoid GetName() =0 。在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。为了解决上述问题,将函数定义为纯虚函数,则编译器要求在派生类中必须予以重写以实现多态性。同时含有纯虚拟函数的类称为 抽象类 ,它不能生成对象。这样就很好地解决了上述两个问题。将函数定义为纯虚函数能够说明,该函数为后代类型提供了可以覆盖的接口,但是这个类中的函数绝不会调用。声明了纯虚函数的类是一个抽象类。所以,用户不能创建类的实例,只能创建它的派生类的实例。 必须在继承类中重新声明函数(不要后面的 0)否则该派生类也不能实例化,而且它们在抽象类中往往没有定义 。定义纯虚函数的目的在于,使 派生类仅仅只是继承函数的接口 。纯虚函数的意义,让所有的类对象(主要是派生类对象)都可以执行纯虚函数的动作,但类无法为纯虚函数提供一个合理的缺省实现。所以类纯虚函数的声明就是在告诉子类的设计者,"你必须提供一个纯虚函数的实现,但我不知道你会怎样实现它"。 //抽象类 class Person{     public:         //纯虚函数         virtual void GetName()=0; }; class Student:public Person{     public:         Student(){         };         void GetName(){             cout<<"StudentName:xiaosi"<
鹏博士前三季度营收超41亿智慧云网业务峥嵘初现近日,鹏博士电信传媒集团股份有限公司发布了2020年第三季度业绩报告。报告显示,鹏博士前三季度实现营收41。42亿元,归属于上市公司股东的净利润17。14亿元,其中数据中心的全部固从新常态办公到智慧办公,还要迈过几道关?日前,Poly博诣最新发布的新常态办工在工作实践空间和文化中打造混合新常态报告(以下简称新常态办工报告)中指出新常态办公是未来势在必行的协作模式。新常态办公可以被理解为一种更加混合月令七十二候之霜降有三侯月令七十二候集解九月中,氣肅而凝,露結為霜矣。霜降時候,露水凝結成霜,天氣也愈發寒冷,秋也將盡。古来霜降有三候一候豺乃祭獸二候草木黃落三候蜇蟲鹹俯。一候豺乃祭兽寒冬將至,豺狼將獵得鹏博士集团出席浙大ARCLab实验室学术交流论坛2020年10月8日,浙大ARCLab实验室学术交流暨雅客论坛,在玉泉校区成功举办。雅客论坛由浙江大学计算机系统结构实验室(以下简称ARCLab)企业合作伙伴共同发起,以培养卓越创与国同庆企业云网商城正式上线,多款产品免费试用鹏博士企业云网2020与国同庆2020年10月01日企业商城正式上线狂欢开启2020。10。0110。30欢度双节中秋献礼与国同庆鹏博士企业云网商城精选智慧办公场景超人气优惠礼遇智鹏博士云网携手阿里云,助力Salesforce应用加速近日,Salesforce在北京建国饭店举办了主题为Salesforce引领客户管理服务革命方案展示巡展,展示了最新一代产品服务及未来发展规划,会议上与会方就当前Salesforc中式养生,爱了!左点小艾3代智能艾灸盒体验前言我是办公室一族,每天对着电脑有写不完的文案,改不完的稿子。办公室6位同事,有70后,80后,90后,陪伴大家最多的就是各自叭叭的键盘声,再就是大家伸脖子,晃脑袋的动作每次看到有家庭按摩师之左点智能走罐按摩器前言众所周知,皇帝内经是一部综合论述中医理论的经典著作。它所确立的独特养生防病视角,决定了它不仅为保障人民健康,繁衍中华民族做出了巨大贡献,而且,还将一如继往地继续为人类的健康事业暖膝更暖心,宾多康膝盖按摩仪助力父母无忧前行老爸是名警察,身体一直很健壮。可是前不久站岗时,突然膝盖疼痛难忍,去医院一查才知道是膝盖磨损了。我很是不解,问大夫我爸这么注重养生,周周坚持打乒乓球,怎么会刚过50就出现膝盖疼痛问卡特马克不粘锅,帅小伙儿教你一虾三吃,感受海鲜风味前言大家好,我是你们的特特,好久不跟大家见面了,自打去年疫情四月回国,我就没再做过海鲜了,熟悉我的朋友们都知道我是常年生活在吉隆坡,日常饮食也是海鲜居多。时隔一年,我再次下起厨房准男妈妈的溜娃神器,QBORN百灵便携折叠婴儿推车前言铁子们,好久不见了。这一年半我经历了太多,从男生变成了男人,我开始养孩子了,可惜孩子妈妈还在广州,我就只好一个人先一个人带着孩子在吉隆坡生活,每天溜娃可以说是最麻烦的事情多了,
洪荒小说先天灵根先天灵根的说法主要出现在洪荒小说中,其中的仙杏是出自封神演义,人参果蟠桃出自西游记。这些先天灵根大部分是现代作者结合了民间传说加以想象自己创造的。故此,关于先天灵根有不同的说法。以三步带你玩转HaGro黑格增长全媒体时代下,信息高倍速流通,大数据成为企业重要的生产资料和战略资源。与此同时,信息的冗杂繁琐与无效使得精准抓取目标客户数据受到了阻碍。因此,有效利用大数据就显得尤为重要。HaGr黑格增长助力畅通Linkedln,海量行业大数据等你来领取做跨境外贸还不知道Linkedln领英?想要实现社交平台红利裂变式增长,却还不知道怎么利用Linkedln领英获客?Linkedln庞大的用户基数Linkedln海量的商业信息心动艾瑞中国商务服务全景分析核心摘要中国商务服务业务种类多元庞大,且商务服务拓客并不像ToC领域一样成熟,各从业者仍在进行各种探索。腾讯营销洞察(TMI)与艾瑞咨询共同携手进行中国商务服务全景分析,包括商务服2021年中国企业直播服务行业发展研究报告核心摘要市场中国企业直播服务市场现状规模历经十多年的发展,B端市场在2020年全面拥抱企业直播,在疫情推动下,中国企业直播市场进入高速发展阶段,市场规模达到近40亿元服务商头部企业众多黑科技,旗舰新体验,南卡骨传导蓝牙耳机RunnerPro2评测由于骨传导耳机拥有譬如不入耳听音等优势,使得其成为诸多爱运动小伙伴佩戴耳机的首选。不过提到骨传导耳机,绕不开的一个品牌就是南卡,南卡是国内最早开始研究骨传导相关技术的团队之一。这不恭喜陈溱溱荣获上海国际少儿时尚品牌发布会专场人气亚军2021年5月23日在上海时尚国际时尚中心隆重发布,2021上海国际少儿时尚品牌发布会一直以来都在为国内外专业的优秀童模提供一个能展示中国儿童时尚美学的平台。发布会由国内外知名媒体华为也有便宜手机,这几款随便宜但表现也不差华为享受20Pro5G手机这款手机于2020年6月发布。从外观上看,它属于那种年轻美丽的机型。6。5英寸的大屏采用LCD材料,分辨率为2400x1080,屏幕刷新率90Hz摄像头方iPhone更换ampampquot新显示器ampampquot?,有望推出头戴式显示器在头戴式显示器行业,使用移动电话作为显示器的先例并不多。许多品牌已经推出了许多这类产品,价格从几十元到几百元不等。这些产品的体验是如此的普通,以至于它们不再有吸引力。苹果公司一款设外贸增长学院第5期成都站YouTube助力出海营销2020年,跨境市场进入强势爆发期。据海关总署数据显示,2020年中国跨境出口1。12万亿元,增长40。1。不少前瞻远略的企业乘势而上实现逆势翻盘,快速引爆流量,利用视频谷歌推广等社媒运营难?2种方法教你解锁社交平台红利裂变增长话不多说,先睹为快视频加载中看完视频是否觉得一切都变得简单了呢?请接着往下看社媒主导互联网的当下,外贸企业纷纷投入社交媒体当中,都想要紧跟社媒热潮,获得更多平台红利,但是社媒运营难