C++
文章平均质量分 50
卡卡fantic
这个作者很懒,什么都没留下…
展开
-
C++:多态概述
1-1 C++多态概述什么是多态:当发出一条命令的时候,不同的对象接收到同一命令所做出的动作是不同的;内容介绍:RTTI:运行时类型识别;异常处理;隐藏和覆盖的概念;什么叫覆盖;覆盖与隐藏之间的关系;早绑定和晚绑定;虚函数表(核心);...原创 2020-04-03 12:03:29 · 179 阅读 · 0 评论 -
C++:虚继承
6-1 虚继承(理论)上图,当初始化一个D类对象时,D从B从A继承,D又从C从A继承,继承了两个A,这种情况是不能容忍的(在一份对象中有两次完全相同的数据,属于冗余数据,我们没办法承担他的系统开销);例子:解决办法:虚继承上图中的MigrantWorker只含有一份Person的数据;6-2 虚继承(编码)Person.h#ifndef PERSON_H //解决重定义的...原创 2020-04-03 11:34:17 · 299 阅读 · 0 评论 -
C++:多继承和多重继承
5-1 多继承和多重继承(一)多重继承:多继承:公有继承下:上图,如果不写public继承,则系统默认为private继承;5-2 多重继承代码演示原创 2020-03-17 11:43:54 · 282 阅读 · 0 评论 -
C++:is A
4-4 is Ais a 和 has a 的区别:public继承是一个接口继承,保持is-a原则,每个父类可用的成员对子类也可用,因为每个子类对象也都是一个父类对象。 (子类 is a 父类)protetced/private继承是一个实现继承,基类的部分成员并非完全成为子类接口的一部分,是 has-a 的关系原则。 (子类 has a 父类)上图:子类可以赋值给父类 或 基...原创 2020-03-14 21:37:19 · 518 阅读 · 0 评论 -
C++:隐藏
4-1 C++隐藏什么是隐藏:(父子关系、成员同名、隐藏)例子1:例子2:4-1 C++隐藏编码Person.h#include <string>using namespace std;//class也在std里面class Person{public: Person(); void play();protected: string m_st...原创 2020-03-14 13:35:21 · 677 阅读 · 0 评论 -
C++:保护继承和私有继承
3-3 保护继承和私有继承例子:上图:线段类Line只能访问到m_coorA和m_coorB的公有数据成员和公有成员函数;线段和坐标的关系是Has a的关系(包含关系),私有继承也是一种包含关系,当我们定义了一个子类的对象的时候,子类对象就包含了一个父类对象,因为它只能访问父类中公有的数据成员和成员函数(被保护的呢?:protected对于子女、朋友来说,就是public的,可以自...原创 2020-03-13 23:20:53 · 572 阅读 · 0 评论 -
C++:公有继承
3-1 公有继承继承方式:公有继承基类成员访问属性是public时:基类成员访问属性是protected和private时:上图:成员函数访问时,protected和private都可以被访问,但在继承时出现区别:上图:Person中的private数据成员被继承到了Worker中的不可见位置(不是private下面),所以派生类的成员函数调用时是禁止的;总结:...原创 2020-03-13 22:22:38 · 879 阅读 · 0 评论 -
C++:继承的作用
2-1 为什么继承内存中的对象:2-2 代码演示Person.h#include <string>using namespace std;//class也在std里面class Person{public: Person(); ~Person(); void eat(); string m_strName; int m_iAge;};P...原创 2020-03-13 18:09:34 · 1072 阅读 · 0 评论 -
C++:实践1(自动走迷宫)
上图:最后一个函数,把光标移动到相应的坐标位置上;原创 2020-03-04 18:34:24 · 647 阅读 · 0 评论 -
C++:常对象成员和常成员函数
5-1 常对象成员和常成员函数例子:常对象成员:常成员函数:上图:常成员函数中为什么不能改变数据成员的值?上图:编译后this指针是用const指针修饰的,成了一个常指针,通过常指针改变指针指向的数据是不被允许的;上图中:互为重载,但不推荐这样使用;上图:调用的是不带const的函数;5-2 常对象成员和常成员函数实践Coordinate.h#...原创 2020-03-03 13:07:04 · 655 阅读 · 0 评论 -
C++:this指针
4-6 C++ this指针例子:如果参数与数据成员同名会怎么样呢?解决方法:this指针(指向数据自身的指针)成员函数如何访问到对应的数据成员?上图:系统为每个成员函数都加了this指针(编译器自动加了this指针),用户不用写;4-7 C++ this指针实践Array.hclass Array{public: Array(int len); ~Arr...原创 2020-03-02 16:51:11 · 227 阅读 · 0 评论 -
C++:对象成员指针
4-4 C++对象成员指针定义:对象的指针作为另一个类的数据成员;例子:第三种初始化方式:上图:line中有两个对象成员指针,每个指针占4字节,所以是八;如果line的两个对象是对象成员,则每个对象有两个int,占8,两个就占16;内存中的对象成员指针:4-5 C++对象成员指针实践Coordiante.h#include<iostream>us...原创 2020-03-02 13:51:18 · 584 阅读 · 1 评论 -
C++:对象指针
4-1 C++对象指针例子:上图:new会自动调用构造函数,而c语言的malloc只是开辟内存;4-2 C++对象指针实践Coordinate.hclass Coordiante{public: Coordiante(); ~Coordiante();public: //同样的访问限定符可以出现多次 int m_iX; int m_iY;};Coordin...原创 2020-03-02 12:50:05 · 222 阅读 · 0 评论 -
C++:深拷贝与浅拷贝
3-1 C++深拷贝浅拷贝浅拷贝例子:浅拷贝例子plus:上图浅拷贝存在的问题:arr2的指针和arr1的指针指向同一个内存,销毁的时候同一段内存被销毁两次;解决方法:深拷贝(不是简单的数值拷贝,而把堆中内存的数据也进行拷贝):3-2 C++拷贝实践Array.hclass Array{public: Array(int count); Array(const A...原创 2020-02-29 22:23:51 · 168 阅读 · 0 评论 -
C++:对象成员
2-5 对象成员上图:表示一条线的类需要两个点的对象;实际上线段的实例化应该有参数:2-5 对象成员代码实践Coordinate.h#include<iostream>using namespace std;class Coordiante{public: Coordiante(int x,int y); ~Coordiante();...原创 2020-02-29 19:10:37 · 591 阅读 · 0 评论 -
C++:对象数组
2-1 C++对象数组例子:坐标类上图:销毁对象数组的过程,会调用三次析构函数;2-2 C++对象数组实践(一)Coordiante.h:#include<iostream>using namespace std;class Coordiante{public: Coordiante(); ~Coordiante(); void setX(int _x...原创 2020-02-28 20:56:04 · 552 阅读 · 0 评论 -
C++:总结(一)
综合练习:定义一个Student类,包含名字一个数据成员,定义无参构造函数、有参构造函数、拷贝构造函数、析构函数及对于名字的封装函数,在main函数中实例化Student对象,并访问相关函数,观察运行结果。#include <iostream>#include <string>using namespace std;/** * 定义类:S...原创 2020-02-28 13:09:21 · 145 阅读 · 0 评论 -
C++:析构函数
6-10 C++析构函数析构函数在对象销毁时自动调用,完成的任务是归还系统的资源;上图:析构函数不允许加任何参数,也就不可能重载;思考:析构函数有存在的必要性吗?上图中:析构函数显得很重要;6-11 C++析构函数代码演示Teacher.h:#include<string>using namespace std;class Teacher{pub...原创 2020-02-28 12:41:44 · 305 阅读 · 0 评论 -
C++:拷贝构造函数
6-7拷贝构造函数上图中:实例化了三个对象,应该输出三句(调用三次构造函数),但实际上值输出了一句;之前说:实例化对象的时候一定会调用构造函数;没有矛盾:stu2和stu3调用的构造函数 不是stu1调用的我们定义的构造函数,而是拷贝构造函数;6-7拷贝构造函数代码演示Teacher.h:#include<string>using namespace s...原创 2020-02-27 22:32:56 · 369 阅读 · 0 评论 -
C++:构造函数初始化列表
6-4 C++构造函数初始化列表上图:实例化过程中不需要传递参数的构造函数称为默认构造函数;推荐使用初始化列表的方式进行初始化操作;此时语法错误:const常量m_dPi第二次赋值了;解决办法:初始化列表:6-5 初始化列表编码要求:Teacher.h:#include<string>using namespace std;class Teac...原创 2020-02-27 21:47:47 · 366 阅读 · 0 评论 -
C++:构造函数
6-1 构造函数讲解上图中:栈区的特点:内存由系统自动进行控制,分配和回收都不需要程序员关心;堆区的特点:需要程序员手动分配和回收;1、实例化之前不会占堆或栈的内存;2、实例化之后(上图),每个对象都会在栈中开辟一段内存,用来存储各自的数据;但它们是不同的变量,占据着不同的内存;3、实例化之后,若不进行初始化,则不能对其进行正确的操作;逻辑代码只编译出一份在代码区,当需要的时候...原创 2020-02-27 20:51:59 · 247 阅读 · 0 评论 -
C++:类外定义
5-1 类外定义上图中:类内定义的函数默认为内联函数;同文件类外定义:分文件类外定义(好处多):5-2 类外定义代码演示同文件类外定义:#include<iostream>#include<stdlib.h>#include<string>using namespace std;class Teacher{public:...原创 2020-02-26 22:56:20 · 2414 阅读 · 0 评论 -
C++:属性封装
4-1 C++属性封装之初始封装上图:违背了面向对象的基本思想,修改如下:上图中:age设置为1000而不能提示错误,下图中可以提示:上图中:轮子个数只希望读而不希望写时,可以这样;4-2 C++属性封装代码演示#include<iostream>#include<stdlib.h>#include<string>using n...原创 2020-02-26 21:25:35 · 467 阅读 · 0 评论 -
C++:String和字符串数组操作函数
strstr(str1,str2) :用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返NULL;strlen(char const* str):用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符);strcat(str,ptr):是将字符串ptr内容连接到字符串str后,然...原创 2020-02-26 18:23:55 · 1182 阅读 · 0 评论 -
C++封装:类和对象
2-1 C++类和对象目的不同,抽象出的信息不同;对象是具体的事物;类是从对象中抽象出来的,出于不同的目的,同一事物可以被抽象为不同的类;封装:把实现细节封装起来,只暴露给用户关心的部分;怎么实现希望暴露和希望隐藏:访问限定符;扩展:结构体和类的区别:1.语法定义上的区别:定义类使用关键字class 定义结构使用关键字struct;2.结构体中声明的字段无法赋予初...原创 2020-02-26 12:35:04 · 1479 阅读 · 0 评论 -
C++:内存管理
上图中:内存申请可能失败(比如没有足够的内存可以申请了);上图中:delete之后一定要把指针设成空,否则会出现很多问题;申请内存时可以初始化:int *p = new int(20);内存失败处理语句:if(NULL == p){ system("pause"); return 0;}块内存的初始化可以用数组:int *p = new i...原创 2020-02-25 23:07:08 · 318 阅读 · 0 评论 -
C++:函数特性
一、函数参数默认值上图中:声明函数时函数参数默认值,定义函数的时候不用;二、函数重载定义:上图中:相同作用域一般指同一个命名空间;例子:上图:右边红的是编译后的函数名;调用的时候写左边的,系统会自动根据参数识别调用的哪个函数;重载函数的作用:比如求两个或三个数的最大值的函数,就可以只用一个函数名,而不用再去想其他的函数名,系统会自动识别;实际用中,若:void fun...原创 2020-02-25 22:44:11 · 493 阅读 · 2 评论 -
C++:const
3-1 控制变化的const一、const与基本数据类型1.基本数据类型2.const定义了之后是常量(灰色方块),不能再更改,否则会报错,编译通不过;注:int const a=3;是错误的二、const与指针类型上图此时const修饰的是*p,也可以理解为const int 是一体;此时不能通过p来修改x的值;上图const此时修饰的p,p的值不能修改了;上...原创 2020-02-24 20:00:55 · 260 阅读 · 0 评论 -
C++:引用
简介:本课程是C++起航篇的延伸,讲述了引用、const、函数默认值、函数重载、内存管理等内容;原创 2020-02-24 18:33:47 · 220 阅读 · 0 评论 -
C++:基本知识
4-1 c++的新特性(与c语言比较)一、数据类型:二、初始化方法:三、随用随定义:4-2 c++的输入输出方式4-3 c++新特性以及输入输出演示#include<iostream>#include<stdlib.h>using namespace std;//要求:提示用户输入一个整数,将整数分别以8进制、10进制、16进制打...原创 2020-02-23 13:25:36 · 368 阅读 · 0 评论 -
C++:简介 / IDE环境搭建 /初体验
1-1 C++简介C与C++的关系:C是C++的子集;c代码在c++环境下完全可以运行;c++是从c的基础上发展而来的:c语言面向过程,c++支持面向过程+支持面向对象;C语言比C++运行更高效;2-1 C++ IDE环境搭建IDE : 集成开发环境,一般包括代码编辑器、编译器、调试器和图形用户界面工具;...原创 2020-02-28 13:42:07 · 571 阅读 · 0 评论