news 2026/6/3 17:35:26

C++之继承与派生类的关系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++之继承与派生类的关系

  • 子类对象会继承基类的属性的行为,任何时候子类对象都可以被当做基类类型的对象,通过子类对象可以直接访问基类中的成员,如同是基类对象在访问它们一样

向上造型和向下造型

  • 向上造型(upcast):将子类类型的指针或引用转换为基类类型的指针或引用;这种操作性缩小的类型转换,在编译器看来是安全的,可以隐式转换
  • 向下造型(downcast):将基类类型的指针或引用转换为子类类型的指针或引用;这种操作性放大的类型转换,在编译器看来是危险的,不能隐式转化,但是可以显式转换
#include<iostream>usingnamespacestd;classHuman{private:intm_private;protected:string m_name;intm_age;constint&get(void){returnm_private;}public:Human(conststring&name,intage){m_name=name;m_age=age;m_private=1234;}voideat(conststring&food){cout<<"我在吃: "<<food<<endl;}voidsleep(inthour){cout<<"我睡了"<<hour<<"小时"<<endl;}};classStudent:publicHuman{private:intm_no;//学号public:Student(conststring&name,intage,intno):Human(name,age){m_no=no;}voidwho(void){cout<<"我叫: "<<m_name<<", 今年"<<m_age<<"岁,学号是: "<<m_no<<endl;//cout << m_private << endl; //errorcout<<get()<<endl;}voidlearn(conststring&course){cout<<"我在学"<<course<<endl;}};classTeacher:publicHuman{private:intm_salary;public:Teacher(conststring&name,intage,intsalary):Human(name,age),m_salary(salary){}voidteach(conststring&course){cout<<"我正在讲 "<<course<<endl;}voidwho(void){cout<<"我叫 "<<m_name<<",今年"<<m_age<<"岁, 工资是"<<m_salary<<endl;}};intmain(void){Students("张飞",28,100011);cout<<"sizeof(s) = "<<sizeof(s)<<endl;s.who();s.eat("宫保鸡丁");s.sleep(8);s.learn("C++编程");Teachert("诸葛亮",34,200000);t.who();t.teach("嵌入式");t.sleep(7);t.eat("汉堡");// Student * -----> Human *:向上造型Human*ph=&s;ph->eat("香蕉");ph->sleep(10);//ph->who(); //error// Human * --------> Student *: 向下造型(合理)Student*ps=static_cast<Student*>(ph);ps->who();Humanh("赵云",22);//Human * -------> Student *: 向下造型 (不合理)Student*ps2=static_cast<Student*>(&h);ps2->who();return0;}

成员函数的重定义(名字隐藏)

  • 重定义: 简单的说就是子类中定义了和父类的同名函数,对父类的成员函数造成了隐藏
#include<iostream>usingnamespacestd;classBase{private:intx;public:voidset(inti){x=i;}voidprint(){cout<<"Base class "<<"x= "<<x<<endl;}};classDerived:publicBase{private:intm,n;public:voidset(intp,intk){m=p;n=k;}voidprint(){Base::print();cout<<"Derived class "<<"m = "<<m<<", n="<<n<<endl;}};intmain(void){Derived d;d.set(10,20);//d.set(100); // error 名字隐藏d.Base::set(100);d.print();return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 2:12:28

StructBERT中文相似度模型实战教程:低代码平台语义组件封装

StructBERT中文相似度模型实战教程&#xff1a;低代码平台语义组件封装 1. 引言&#xff1a;让机器理解“相似”这件事 你有没有遇到过这样的场景&#xff1f;想在海量文档里快速找到内容相近的文章&#xff0c;或者需要自动判断用户提问和知识库答案是否匹配&#xff0c;又或…

作者头像 李华
网站建设 2026/5/28 21:29:58

零基础玩转FLUX.小红书工具:手把手教你生成高质量生活照

零基础玩转FLUX.小红书工具&#xff1a;手把手教你生成高质量生活照 你是不是也刷过小红书上那些光影自然、构图舒服、像朋友随手拍却美得恰到好处的生活照&#xff1f;阳光洒在发梢的绒毛、咖啡杯沿的唇印、窗边逆光里的半张侧脸——不是影楼精修&#xff0c;却比日常更动人。…

作者头像 李华
网站建设 2026/5/30 21:11:52

中小企业AI降本首选:Gemma-3-270m开源镜像免配置部署教程

中小企业AI降本首选&#xff1a;Gemma-3-270m开源镜像免配置部署教程 你是不是也遇到过这些情况&#xff1f; 团队想用AI写产品文案&#xff0c;但调用大模型API按token计费&#xff0c;每月账单吓一跳&#xff1b; 客服要自动回复常见问题&#xff0c;可自建服务又得招人搭环…

作者头像 李华
网站建设 2026/5/29 1:38:18

StructBERT情感分类模型部署案例:客服对话情感识别企业落地

StructBERT情感分类模型部署案例&#xff1a;客服对话情感识别企业落地 在客户服务场景中&#xff0c;每天都会产生大量对话文本——用户咨询、投诉反馈、售后沟通、满意度评价……这些文字背后藏着真实的情绪信号。但人工逐条阅读分析效率低、成本高、主观性强。有没有一种方…

作者头像 李华
网站建设 2026/5/29 23:35:17

无需云端!Qwen2.5-0.5B本地化AI解决方案体验

无需云端&#xff01;Qwen2.5-0.5B本地化AI解决方案体验 你是否曾为一句“正在连接服务器…”等待超过10秒&#xff1f;是否在写周报时犹豫要不要把敏感业务数据发给某个在线AI&#xff1f;是否试过在咖啡馆连着公共Wi-Fi&#xff0c;却不敢让AI帮你润色客户合同&#xff1f;这…

作者头像 李华
网站建设 2026/6/2 22:02:07

古籍数字化中的页面自动旋转校正技术

古籍数字化中的页面自动旋转校正技术 1. 古籍扫描件的"歪斜困境"&#xff1a;为什么校正不是可选项而是必选项 你有没有翻过一本泛黄的线装古籍&#xff1f;那些竖排繁体字、朱砂批注、虫蛀痕迹&#xff0c;每一页都像在讲述一段尘封的故事。但当这些珍贵文献被扫描…

作者头像 李华