首页 > 编程语言 >C++学习(四)

C++学习(四)

时间:2023-06-15 18:56:27浏览次数:56  
标签:int age C++ class 学习 Person Student public

对象继承

 1 #include <iostream>
 2 using namespace std;
 3 
 4 class Person{
 5 public:
 6     int age;
 7     char * name;
 8     Person(char * name, int age){}
 9 };
10 //类默认是私有的
11 //public:公开继承,不加public会导致 main()函数中 student.age无法引用
12 //private: 私有继承在类里面是可以拿到父类属性,但是在类外边不行
13 class Student : public Person{
14 public:
15     Student(char * name, int age): Person(name,age){}
16 };
17 
18 
19 int main(){
20     Student student("王三",10);
21     student.age = 20;
22     cout <<  "age :"<< student.age <<endl;
23     return 0;
24 }
多继承 c++中多继承存在二义性问题。例如:  
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 class BaseActivity1 {
 6 public:
 7     BaseActivity1(){}
 8     void showInfo(){
 9         cout << " BaseActivity1 showInfo" <<endl;
10     }
11 };
12 
13 class BaseActivity2{
14 public:
15     BaseActivity2(){}
16     void showInfo(){
17         cout << " BaseActivity2 showInfo" <<endl;
18     }
19 };
20 
21 class MainActivity :public BaseActivity1,public BaseActivity2{
22     //解决方案2
23   // void showInfo(){
24  //       cout << " MainActivity showInfo" <<endl;
25   //  }
26 };
27 
28 
29 int main(){
30     MainActivity act;
31     //此行代码会报错,编译器不清楚到底执行的是base1还是base2的showInfo()
32    // act.showInfo();
33    //解决方案1:指定父类的执行函数 low
34    act.BaseActivity1::showInfo();
35    //方案2:可在子类中重写此函数
36    
37     return  0;
38 }

 

虚继承(系统源码推荐使用) virtual: 虚关键字 A为顶层父类,B C 继承A, D继承B C。
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 class Person{
 6 public:
 7     int age;
 8 };
 9 class Women :public Person{
10 
11 };
12 
13 class Men : public Person{
14     
15 };
16 
17 class Student :public Women,public Men{
18 //第二种解决方案:子类重写
19 public:
20     int age;
21 };
22 
23 
24 int main(){
25     Student student;
26     //第一种解决方案
27     student.Women::age = 100;
28     cout << "age: "<< student.Women::age << endl;
29     return  0;
30 }
31 
32 
33 第3种解决方案:通过virtual 关键字()
34 #include <iostream>
35 
36 using namespace std;
37 
38 class Person{
39 public:
40     int age;
41 };
42 //通过virtual 关键字
43 class Women :virtual public Person{
44 
45 };
46 
47 class Men : virtual public Person{
48 
49 };
50 
51 class Student :public Women,public Men{
52 
53 };
54 
55 
56 int main(){
57     Student student;
58     student.age = 100;
59     cout <<"age  " << student.age <<endl;
60     return  0;
61 }

 

 

标签:int,age,C++,class,学习,Person,Student,public
From: https://www.cnblogs.com/wangybs/p/17483810.html

相关文章

  • 学习Spring必学的Java基础知识----反射
    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”。以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些Java基础知识,希望对大家有所帮助。):[1]Java反射知识-->SpringIoC[2]属性编辑器,即PropertyEditor......
  • Kong入门学习实践(4)负载均衡与正则路由
    最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。本篇,我们学习快速配置一个最常见的基本功能:负载均衡与正则路由。关于负载均衡所谓负载均衡,就是通过负载均衡算......
  • Hibernate学习笔记
    大小写不敏感持久化类一般被定义为JavaBean,这是推荐的设计,但是并不是必须的。Hibernate也可以直接访问这些field。所有的持久化类(persistentclasses)都要求有无参的构造器,因为Hibernate必须使用Java反射机制来为你创建对象。映射文件一个映射文件看起来像这样<hibernate-mapping>......
  • python篇-工业相机学习
    1,抠出屏的图importcv2fromPILimportImagedefgetCoordinate(img):rectangle=[]gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#灰度图ret,binary=cv2.threshold(gray,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)#二值化element3=......
  • vue学习记录 4
    本地服务器配置apache安装学习参考网址:(官网下载apache包的时候可能会疯狂断开链接)教程里没说,但是要管理员身份操作cmd。https://blog.csdn.net/qqhruchen/article/details/127457889?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefaul......
  • 「学习笔记」三角函数
    有关三角函数的公式、转化、证明等等\[\sin^2\alpha+\cos^2\alpha=1\\\dfrac{\sin\alpha}{\cos\alpha}=\tan\alpha\\(\sin\alpha\pm\cos\alpha)^2=1\pm2\sin\alpha\cos\alpha\\\sin\alpha=\cos\alpha\tan\alpha\\\sin......
  • redis学习八:数据类型命令及落地运用 (Zset)
    有序,附带分数,适用于排行榜1.zaddkeyscore1v1score2v2新增键值对;zrangezsetstartend查看对应范围值zrangekeystartendwithscores带着分数查看;zrevrangekey倒序查看,用法和zrange类似; 2.zrangebyscorekeyminmax取分数范围内的value;也可以在前面加上(是不......
  • Kafka入门学习
    kafka概述Kafka是一个分布式流媒体平台,类似于消息队列或企业消息传递系统。kafka官网:http://kafka.apache.org/名词解释producer:发布消息的对象称之为主题生产者(Kafkatopicproducer)topic:Kafka将消息分门别类,每一类的消息称之为一个主题(Topic)consumer:订阅消息并处理发布......
  • 碎片化学习前端之JavaScript(JS 压缩图片)
    前言图片压缩是前端开发中常见的需求,目前前端主流的解决方案有:Canvas手动实现压缩以及第三方库压缩两种方案。Canvas手动实现压缩Canvas实现压缩主要原理是:将图片绘制到canvas上,然后通过调整canvas的宽高来实现压缩。functioncompressImage(file,maxWidth,maxHeight......
  • C/C++《数据结构》课程设计指导书[2023-06-15]
    C/C++《数据结构》课程设计指导书[2023-06-15]《数据结构》课程设计指导书适用专业:计算机2022级编写人:李玉龙2023年5月《数据结构》课程设计指导书一、设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题;2.初步掌握软......