自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 继承与多态03 虚继承

继承1.单继承2.多继承   菱形继承----派生类中有多份基类的数据解决方法:虚继承虚基类的构造优先级 > 普通基类画图顺序 非虚继类  > 虚基类 >派生类(方便画图,以下省去类中的成员方法)class A{public:int ma;};class B : virtual public A{public:int...

2019-01-20 18:00:48 230

原创 继承与多态02 虚函数

继承与多态2多态:一种接口(方法),不同形态同一个事物在不同场景下的多种形态。 函数名相同,传入不同参数,功能不同多态实质:接口复用继承实质:代码复用静态多态是编译器在编译期间完成的,编译器会根据实参类型来选择调用合适的函数,如果有合适的函数可以调用就调,没有的话就会发出警告或者报错 五、引用和指针1. 基类对象和派生类对象    1.1 派生类对象可以赋值...

2019-01-15 19:08:29 191

原创 继承与多态01 继承

继承与多态1一.继承C++是一种面向对象的语言,最重要的一个目的就是——提供可重用的代码,而类继承就是C++提供来扩展和修改类的方法。类继承就是从已有的类中派生出新的类,派生类继承了基类的特性,同时可以添加自己的特性。继承本质:代码复用形式为如下类标识 类名:继承方式 基类名称 class People{public:People(std::string...

2019-01-15 19:02:04 221

原创 类和对象 02类对象的生存周期两个习题

1.请给出下面对象创建过程中涉及的方法打印{public:    Test(int a=5, int b=5):ma(a), mb(b)    {cout<<"Test(int, int)"<<endl;}    ~Test()    {cout<<"~Test()"<<endl;}    Test(const Test &sr

2018-12-06 20:09:23 171

原创 类和对象04 单例模式 友元函数

一.设计模式单例模式(类只能生成一个对象)屏蔽构造函数,拷贝构造函数(放在private中 类外无法访问),此时类外就无法看到这两个函数了 也就无法生成对象了 类就没有意义了 类中给出一个接口(getInstance) 生成唯一对象 返回值为类类型的指针或引用(不生成其他对象) 如果为类类型返回 则会有临时对象产生 此时就不叫单例模式了    ①返回值不能返回类类型(会有临时对象产生)...

2018-12-05 13:30:25 514 1

原创 类和对象03 初始化列表 常对象 static

初始化列表 常对象 static一.初始化列表构造函数的初始化列表 ‘:’来指明成员的初始化方式构造函数内部都是赋值CLink(): a(20)     //(int a = 20 初始化a){     b = 30;        //赋值}笔试题:以下这段代码  初始化列表中的执行顺序问题(1)Test (int a,int b):ma(a),mb(ma)...

2018-11-30 18:01:52 201

原创 类和对象02 四个默认的函数 类对象的生存周期

在c++中有六个默认函数 他们分别是:一.构造函数二.析构函数三.拷贝构造函数四.赋值运算符的重载函数五.取地址操作符的重载函数六.const修饰的取地址操作符的重载函数在这里我们只讨论前四个函数 构造函数我们知道面向对象的程序设计语言倾向于对象 而对象一定要经过初始化后使用起来才安全 因此引入了构造函数的概念 对象在创建时都会调用构造函数来进行初始化  构造...

2018-11-29 20:15:19 217

原创 类和对象01 简单认识类和对象

接下来我们就开始学习C++的部分首先 我们要搞清楚C++语言是一门面向对象的编程语言 问: 首先什么是编程思想?答: 所谓的编程思想 就是人们用计算机来解决实际问题的时候的一种思维方式 或者说是一种基本的策略常见的编程思想有面向过程(例如c语言)和面向对象(例如c++),很多语言的语法各不相同 但是基本的编程思想却是差不多的 举个简单的例子:大家去学校“报名上学”这件事...

2018-11-26 22:07:13 155

原创 c/c++区别(三)(7-8) new delete namespace

 一.New用法(开辟内存)系统计算所需大小使用new运算符时必须已知数据类型,new运算符会向系统堆区申请足够的存储空间,如果申请成功,就返回该内存块的首地址,如果申请不成功,则返回零值。1.开辟单变量地址空间(1)new int;  //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址。int *a = new int 即为将一个int类型的地址赋值给整型指针a...

2018-11-23 14:33:38 119

原创 c/c++区别(二) (6)引用

 第6个区别:引用  一.引用传入变量:内存单元的别名引用:内存单元的别名 引用是一个别名底层处理:C++中和指针处理相同 在用到引用变量的地方 系统会自动解引用 引用开辟内存 引用的特点必须要初始化 引用初始化的变量一定要可以取地址 引用是不可改变的 引用只能访问引用变量所引用的内存单元二.1.const和一级指针引用的结合Const只是为了杜绝间...

2018-11-21 14:00:26 189

原创 c/c++区别(一)(1-5)函数的默认值; 函数重载; 内联函数; c/c++接口调用; const在c/c++的区别

c/c++ 的区别一.函数的默认值在C语言里函数的参数是不能够带默认值的。比如int func(int a, int b = 1);这样的声明就是不正确的。但是在C++中上述的声明是被允许的 函数的默认参数值,即在定义参数的时候同时给它一个初始值。在调用函数的时候,我们可以省略含有默认值的参数。也就是说,如果用户指定了参数值,则使用用户指定的值,否则使用默认参数的值。 1....

2018-11-12 22:35:42 301

原创 函数堆栈调用

函数堆栈调用 在了解函数堆栈调用之前我们先来看看这5个问题形参是由谁开辟的?在哪里开辟?   形参是由调用方开辟的形参的入栈顺序?   自右向左(支持可变参 从左至右不知道实参的个数大小 而自右向左 能跑到后面 证明已经知道了参数的个数)函数的返回值由谁带出来?   由寄存器带出来为什么回退到了调用方栈桢 怎么控制函数沿着函数调用点继续执行?Call函数在调用之前...

2018-11-12 22:28:23 142

原创 c++ 编译链接运行原理及虚拟地址空间布局

当我们写好.c/.cpp文件时 此时文件还不能运行 因为他要经过以下的四步才可以运行 .c/.cpp(生成.i)     编译(生成.s)      汇编(生成.o)       链接(生成.exe)1.#define宏替换      1.词法分析         指令翻译成二进制    1.合并段和符号表2.#include 递归展开   2.语法分析              ...

2018-11-05 23:15:17 361

原创 c/c++编译流程

编译流程包括四个阶段:预处理(预编译),编译,汇编,链接编译流程的基本图如图:一.预处理gcc  -E  main.c  -o  main.i预处理相当于根据预处理指令组装新的c/c++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,读取c/c++源程序,对其中的伪指令(以#开头的指令)进行处理,具体为下:1. 将所有的#define删除,并且展开所有的宏定义(字...

2018-05-17 19:51:50 168

原创 内存重叠

内存重叠:拷贝的目的地址在源地址范围内,所谓内存重叠就是拷贝的目的地址和源地址有重叠。1,3图不会出现内存重叠的问题,而2,4会出现内存重叠的问题。...

2018-05-12 20:35:53 275

原创 结构体的大小 内存对齐

结构体的大小 内存对齐 Struct A{   int a;   int b;}; int main(){Printf(“%d\n”,sizeof(struct A));共占8字节 Struct B{char a;//1+3(加上3成为4的倍数,虽浪费了3个字节,但速度更快)int b;//4};共占8字节  Struct C{   char a;//1+1(加上1为2的倍数)   short b...

2018-05-07 22:28:56 116

原创 理解内存和变量

总结:理解内存和变量 代码段全局(静态)变量区栈 stack堆 heap        生命周期作用域默认值内存区域链接属性1.全局变量从程序运行开始创建,程序结束销毁从定义该变量开始,一直到文件的结束0全局变量区外部2.静态全局变量从程序运行开始创建,程序结束销毁从定义该变量开始,一直到文件的结束0全局变量区内部3.局部变量进入函数时创建,函数退出时销毁本函数内部有效随机值栈无4.静态局部变量进...

2018-04-28 16:45:44 324

原创 二维数组

二维数组: 1.首先我们定义一个二维数组int arr[3] [4];//这表示定义了一个3行4列的二维数组,并且行优先有以下几种表示二维数组元素的方法:int brr [3] [4] ={{1,2,3,4},{5,6,7,8},{9,10,11,12}};int crr [3] [4] = {1,2,3,4,5,6,7,8,9,10,11,12};Int err [3][4] = {1,2,3,...

2018-04-14 20:08:27 122916 8

原创 字符串崩溃原因

这篇博客总结字符串崩溃的原因 首先 eg:char *str1='abcde';//字符串常量,常量不允许修改,占4字节,若abcde的地址为1000,4个字节只保存他的地址,无法放abcde。char str2[]='abcde';//字符数组,占6字节,a,b,c,d,e,\0,自己创建的可以修改里面的值。str1 [0]='x';//写错误,把'x'改成了'a',因为字符串常量无法修改,所以...

2018-04-13 18:55:47 1150

原创 关于进制的问题

关于进制的问题:eg: 如果某系统15*4=112成立,则系统采用的是几进制? a.6 b.7 c.8 d.9解题思路:先看个位数字的乘积:5*4=20根据选项试出20对哪个数取余为2,排除bc选项,展开等号两边:(n+5)*4=n^2+n+2  解得n=-3(舍),n=6 因此答案选aeg: 假设在n进制下,下面等式成立,567*456=150216,则n的值是? a.9 b.10 c.12 d...

2018-04-10 09:33:57 620

原创 指针的算数运算

指针的算术运算:1.指针+数字(有意义):需要调整,调整的权重(格子的大小)为sizeof(指针去掉一个*)  指针+1(向后移动):不是加一个字节或者加整个数组,而是加一个单元格2.指针-数字(有意义):需要调整,调整的权重(格子的大小)为sizeof(指针去掉一个*)   指针-1(向前移动):减一个单元格eg:int *p=(int *)0x2010;//0x2010为十六进制printf(...

2018-04-05 18:12:42 419

原创 交换函数

交换函数:

2018-03-31 19:41:01 136

原创 关于指针的初步理解

指针:1.指针=地址2.获取任何变量的地址都是:&变量名3.*指针变量名,则间接访问到(解引用)指针指向的变量4.指针赋值一定要类型一样5.x86或者32位平台,指针4字节6.x64或者64位平台,指针8字节eg:int a,b,c,d;int*p1=&a;int*p2=&b;*p1=100;//a=100*p2=200;//b=200p1=&c;p2=&d...

2018-03-30 16:03:32 151

原创 逆序输出数字

题目:给一个不多于5位的正整数,要求:1.求出它是几位数;2.分别输出每一位数字;3.按逆序输出个位数字,例如原数为321,应输出123.#include<stdio.h>//计算m的n次方int sqrt(int m,int n){ int i = 1; int a = m; if(m == 0){ return 0; } if(n==0){ return 1; } whil...

2018-03-28 15:25:55 3681

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除