C++面向对象编程(类)
文章平均质量分 76
龙星尘
现在正在学硬件和软件编程,用的是C++和Arduino编程工具,以后会发一些关于编程的文章!请大家多多关照!
展开
-
C++函数模板
今天我们讲的是C++里面普通的函数模板,明天我将会讲解更加复杂的函数模板,不如说函数模板的重载,函数调用次序等.原创 2022-11-25 17:16:58 · 671 阅读 · 4 评论 -
编程填空:统计动物数量
因为这是关于多态这个章节的最后一题,所以我讲的非常详细,之后我会发一个关于C++多态的程序学习总结!原创 2022-11-24 11:30:00 · 532 阅读 · 0 评论 -
怎么又是Fun和Do
1000ms65536kB程序填空输出指定结果无A::FunA::DoA::FunC::Do无A::FunA::DoA::FunC::Do。原创 2022-11-23 15:15:00 · 306 阅读 · 1 评论 -
这是什么鬼delete
这道题主要考的就是虚函数的引用和其特点,也衬托出了虚函数的好处,注意一点,在析构函数和构造函数中不能使用虚函数,但没有代表他们本身不能是虚函数.原创 2022-11-23 11:00:00 · 241 阅读 · 1 评论 -
Fun和Do
1000ms65536kB程序填空输出指定结果无A::FunC::DoNoneA::FunC::Do。原创 2022-11-22 17:05:27 · 275 阅读 · 1 评论 -
看上去像多态
1000ms65536kB程序填空产生指定输出无D::FunB::FunD::FunnBVal=2nBVal=24nDVal=8B::FunnBVal=12无D::FunB::FunD::FunnBVal=2nBVal=24nDVal=8B::FunnBVal=12。原创 2022-11-22 16:51:39 · 304 阅读 · 1 评论 -
C++多态实现原理
多态含义为一个事物有多种形态。在C ++程序设计中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。重载多态和强制多态是指特定多态, 重载多态和强制多态称为特殊多态性,用来刻画语义上无关联的类型间的关系;参数多态和包含多态是指通用多态,类型参数化多态和包含多态称为一般多态性,用来系统地刻画语义上相关的一组类型。在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是子类,就调用子类的函数;原创 2022-11-20 16:50:23 · 2515 阅读 · 1 评论 -
C++虚函数和多态
由前面的内容,我们可以总结出多态的相关内容:使用多态时,程序不必为每一个派生类都编写函数调用,派生类可以只关注本类中对应函数的实现功能,做到基类函数的同一接口的不同实现方式,大大提高了程序的可复用性;同时,基类也可以调用派生类的成员,即向后兼容,提高了程序的可扩充性和可维护性。后一点内容我们在以后的文章中会介绍。总之,多态是面向过程编程和面向对象编程的显著差异之一。灵活使用多态对于编写健壮、可扩充、可复用的程序至关重要。原创 2022-11-18 17:03:46 · 642 阅读 · 1 评论 -
二维数组类
1000ms65536kB写一个二维数组类 Array2,使得下面程序的输出结果是:0,1,2,3,4,5,6,7,8,9,10,11,next0,1,2,3,4,5,6,7,8,9,10,11,无0,1,2,3,4,5,6,7,8,9,10,11,next0,1,2,3,4,5,6,7,8,9,10,11,None0,1,2,3,4,5,6,7,8,9,10,11,next0,1,2,3,4,5,6,7,8,9,10,11,原创 2022-11-17 18:01:08 · 654 阅读 · 1 评论 -
C++派生类的构造函数总结
C++派生类的构造函数总结1 简单的派生类的构造函数的一般形式 为:派生类构造函数名(总参数表):基类构造函数名(参数表){派生类中新增数据成员初始化语句}2 有子对象的派生类的构造函数的一般形式为:派生类构造函数名(总参数表):基类构造函数名(参数表),子对象(参数表){派生类中新增数据成员初始化语句}3 多层派生时的构造函数不要列出每一层派生类的构造函数,只需写出其上一层派生类(即它的直接基类)的构造函数4 多重继承(就是一个派生类从多个基类继承)派生类的构造函数原创 2022-11-16 18:13:19 · 3230 阅读 · 1 评论 -
魔兽世界之二:装备
1000ms魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部。两个司令部之间是依次排列的若干城市。红司令部,City 1,City 2,……,City n,蓝司令部两军的司令部都会制造武士。武士一共有 dragon 、ninja、iceman、lion、wolf 五种。每种武士都有编号、生命值这两种属性。有的武士可以拥有武器。武器有三种,sword, bomb,和arrow,编号分别为0,1,2。双方的武士编号都是从1开始计算。红方制造出来的第 n 个武士,编号就是n。原创 2022-11-16 16:18:11 · 595 阅读 · 1 评论 -
C++覆盖和保护成员
派生类可以定义一个和基类成员同名的成员,这叫做覆盖。在派生类中访问这样的的类成员时,缺省的情况是访问派生类中定义的成员。要在派生类中访问由基类定义的同名成员时,要使用作用域符::。原创 2022-11-15 18:50:24 · 368 阅读 · 1 评论 -
C++继承关系和复合关系
看上面两个类,一个是圆心类(x,y代表圆心的坐标),一个是圆类(由圆心类派生而来),那么我们可以用圆心来派生到圆这里面,这就是继承关系了,那一个圆是不是一个点呢?两条狗可能有着同一个主人,如果我们要修改一个狗的主人信息,那么他的其他狗也需要修改,就有些啰嗦,是不对的(在以后学了数据结构后,可以用'并查集'来进行优化) 几何形体程序中,需要写“点”类,也需要写“圆”类,两者的关系就是复合关系 ---- 每一个“圆”对象里都包含。因为这两个类循环定义了!需要写一个“业主”类,还需要写一个“狗”类。原创 2022-11-12 13:20:53 · 743 阅读 · 2 评论 -
C++构造函数
为什么month会是随机值呢,因为编译器先去初始化year,然后初始化year完成之后,编译器开始去初始化month,但是初始化列表给的是用day去初始化month,但是此时day并没有进行初始化的操作,所以最终看出,month为随机值。无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只能有一个。注意:无参构造函数、全缺省构造函数、我们没写编译器默认生成的构造函数,都可以认为是默认成员函数。会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成。原创 2022-11-11 18:05:28 · 1433 阅读 · 2 评论 -
全面的MyString
1000ms65536kB程序填空,输出指定结果无2. abcd-3.5. efgh-6. c7. abcd-8. ijAl-aboutbigmetakeabcdqrst-abcd-无。原创 2022-11-11 17:02:56 · 529 阅读 · 1 评论 -
C++继承和派生的基本概念
需要继承机制的例子继承和派生的概念继承:在定义一个新的类B时,如果该类与某个已有的类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个,而把B作为基类的一个。派生类是通过对基类进行修改和扩充得到的。在派生类中,可以扩充新的成员变量和成员函数。派生类一经定义后,可以独立使用,不依赖于基类。派生类拥有基类的全部成员函数和成员变量,不论是private、protected、public。在派生类的各个成员函数中,不能访问基类中的private成员。接下来我们来讲几个例子!原创 2022-11-10 18:02:20 · 1025 阅读 · 1 评论 -
C++运算符重载总结
一定要自定义一个拷贝构造函数,这样在重载运算符返回对象副本的时候,编译器会自动调用拷贝构造函数,否则会出现结果错误。把‘=’运算符重载为类成员变量,并且将返回值设计成为该类的引用。除了‘=’运算符以外,其他的运算符重载最好设计成为友元函数。这就是我们今天要讲的运算符重载的总结.友元关系不会被派生类继承。原创 2022-11-10 16:47:42 · 1311 阅读 · 2 评论 -
C++引用
另外,在c中,const变量默认是外部链接,因此在不同的编译单元中如果有同名const变量,会引发命名冲突,编译时报错。6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;sizeof引用得到的是所指向的变量的大小,而sizeof指针是对象地址的大小。②编译时常量,因此可以像#define一样使用,而且因为上面一点,可以在头文件中定义const变量,包含的不同的cpp文件(编译。修饰变量,函数参数,返回值等。原创 2022-11-09 17:03:22 · 1451 阅读 · 1 评论 -
C++类型转换运算符的重载,自增自减运算符的重载
C++里面各种各样的运算符都可以拿来重载,虽然不是所有的运算符都可以重载,但是绝大部分都是可以重载的,比方说这个类型转换运算符的重载,自增自减运算符的重载.原创 2022-11-09 16:41:33 · 1471 阅读 · 3 评论 -
C++流插入运算符和流提取运算符的重载
cout是在iostream这个头文件里面定义的,而cout就是一个类,这个类叫做ostream,也是在头文件之中的.至于"原创 2022-11-08 18:13:15 · 1878 阅读 · 0 评论 -
C++可变长数组
假设我们要实现一个会自动扩展的数组,要实现什么函数呢?先从下面的main函数给出的实现,看看有什么函数是需要我们实现的。// 初始化的数组是空的i < 5;++i)// push_back是成员函数a2 = a;// 重载赋值运算符函数// 由于上一句a2 = a语句,所以a.length()实际上就是a2.length()++i)a2 = a3;// a2是空的数组++i) // a2.length()返回0。原创 2022-11-07 18:16:20 · 2647 阅读 · 1 评论 -
C++赋值运算符重载
但是当类持有其它资源时,例如动态分配的内存、打开的文件、指向其他数据的指针、网络连接等,默认的赋值运算符就不能处理了,我们必须显式地重载它,这样才能将原有对象的所有数据都赋值给新对象。是一个指针,里面存放的是指向存储 age 内容的地址,不重载赋值运算符时,使用默认的赋值运算符时这是把 people1的 mp_age指针里存放的地址赋值给了people2的mp_age指针导致两个指针指向了同一块内存空间,这时候默认赋值运算符的不足就满足不了实际的需求了,需要重载赋值运算符。 在前面的内容中讲解。原创 2022-11-05 10:51:59 · 3151 阅读 · 2 评论 -
C++运算符重载
(1)cout(ostream &cin)(3)运算符重载是针对新类型的实际需求,对原有的运算符进行适当的改造。原创 2022-11-04 16:42:48 · 171 阅读 · 1 评论 -
魔兽世界之一:备战
表示在4点整,编号为5的蓝魔lion武士降生,它降生时生命值为5,降生后蓝魔司令部里共有2个lion武士。(为简单起见,不考虑单词的复数形式)注意,每制造出一个新的武士,都要输出此时司令部里共有多少个该种武士。如果司令部中的生命元不足以制造某个按顺序应该制造的武士,那么司令部就试图制造下一个。给定一个时间,和双方司令部的初始生命元数目,要求你将从0点0分开始到双方司令部停止制造武士为止的所有事件按顺序输出。同样,蓝方制造出来的第n个武士,编号也是n。同一时间发生的事件,先输出红司令部的,再输出蓝司令部的。原创 2022-11-03 17:34:14 · 609 阅读 · 4 评论 -
C++常量对象,常量成员和常引用
今天放学回家,学习了C++类中的常量对象,常量成员和常引用,现在我跟大家来讲一下吧! 我们如果不希望某一个对象的值被改变,则定义这个对象的时候可以在前面加一个const关键字.给大家举一个例子: 我们在以上程序中定义了一个常量对象Obj,现在这个对象的值是不能改的了,如果以后想改Obj的值就会报错:先写一个要改Obj值的函数:然后写一个main,里面让Obj执行这个函数:结果就是: 就会出现这个报错:[Error] passing 'const Demo' as 'this' argu原创 2022-11-02 21:22:37 · 1239 阅读 · 1 评论 -
C++封闭类
今天,我学习的是C++对象的一种操作.就是成员对象和封闭类.那么封闭类是什么呢?和普通类用什么不同吗?封闭类就是有成员对象的类,那么成员对象是什么呢?我们一起来看一下吧封闭类分为了轮胎类,引擎类,汽车类......我们可以将封闭类可以看作一个完整的汽车.那么汽车里面用哪些成员呢,肯定有轮胎对吧,还有引擎,窗户等等,那么轮胎有什么成员呢?原创 2022-11-01 18:27:33 · 1263 阅读 · 3 评论