news 2026/6/26 12:49:01

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/6/20 15:38:44

Qwen3-ForcedAligner-0.6B实时流式处理架构设计

Qwen3-ForcedAligner-0.6B实时流式处理架构设计 1. 为什么需要专为实时流式优化的强制对齐架构 直播字幕生成、在线会议实时转录、智能语音助手响应——这些场景有个共同特点&#xff1a;用户不等待&#xff0c;系统必须跟上说话的节奏。传统强制对齐模型大多面向离线批处理设…

作者头像 李华
网站建设 2026/6/20 15:23:58

Linux系统下AnythingtoRealCharacters2511的高效部署方案

Linux系统下AnythingtoRealCharacters2511的高效部署方案 1. 为什么选择在Linux上部署这个模型 很多人第一次听说AnythingtoRealCharacters2511&#xff0c;第一反应是“这名字真长”&#xff0c;但真正用过的人会发现&#xff0c;它确实能把一张动漫头像变成质感十足的真人照…

作者头像 李华
网站建设 2026/6/21 23:19:09

Coze旅游规划助手智能体+实战

旅游规划助手实战&#xff1a;从工作流、卡片、插件到大模型的全链路拆解 本文基于 Coze 平台搭建的「旅游规划助手」案例&#xff0c;从工作流、卡片、插件、大模型四个维度拆解实现方式&#xff0c;并延伸至企业应用与业务价值&#xff0c;为同类「多步推理 多源数据 富媒…

作者头像 李华
网站建设 2026/6/22 10:34:36

Qwen2.5-1.5B部署案例:基于Streamlit的开箱即用聊天界面搭建全过程

Qwen2.5-1.5B部署案例&#xff1a;基于Streamlit的开箱即用聊天界面搭建全过程 1. 为什么你需要一个真正本地的对话助手&#xff1f; 你有没有试过这样的场景&#xff1a;想快速查个技术概念、改一段文案、或者帮孩子解释一个数学题&#xff0c;却要打开网页、登录账号、等加…

作者头像 李华
网站建设 2026/6/21 23:15:52

DeepChat深度体验:Llama3本地对话引擎效果实测

DeepChat深度体验&#xff1a;Llama3本地对话引擎效果实测 新兴技术的落地&#xff0c;从来不是看参数表上的数字&#xff0c;而是看它在真实对话中能否接住你的问题、理解你的潜台词、给出有温度的回答。当“本地大模型”从技术概念变成一个点击即用的聊天窗口&#xff0c;变…

作者头像 李华
网站建设 2026/6/21 12:46:28

不用外包省成本!美业老板用 AI 工具做年货节海报,闭眼冲

每年一到春节前&#xff0c;我的微信列表就会被同一类消息刷屏&#xff1a;「老师&#xff0c;能不能帮我们店做一张年货节海报&#xff1f;」 「美甲/美容/皮肤管理店&#xff0c;明天就要用&#xff0c;预算不高&#xff0c;能快点吗&#xff1f;」作为长期给美业客户服务的…

作者头像 李华