
知识点
文章平均质量分 51
Qiana_Wu
坚持不懈的编程
展开
-
栈帧
1.定义:C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。栈帧也叫过程活动记录,栈帧就是一个函数执行的环境,按照后进先出的原则存储数据,先进入的数据被压栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。 2.相关概念 栈是向下生长,内存由高地址到低地址。 ebp:帧指针,栈底,指向栈帧的开始,寻址用 bsp:栈指针,随数据原创 2016-12-28 17:28:51 · 491 阅读 · 0 评论 -
C语言中的常见字符串操作函数
以下函数的头文件位于#include<string.h>1.strcat函数:函数原型:char * strcat ( char * destination, const char * source );该函数是字符串拼接函数。将源字符串拼接至目标字符串的结尾处。要覆盖目标字符串中的'\0'。source和destination的空间不能重叠,而且destination...原创 2018-08-16 11:58:49 · 794 阅读 · 0 评论 -
多态的对象模型
1:所谓多态就是多种形态,在两个类中,函数名相同的函数,通过不同对象的调用,产生不同的结果。多态和类型无关,只和对象有关。 构成多态的条件:(1)虚函数的重写:子类中和父类相同点的虚函数 (2)父类的指针/引用调用虚函数 当指向父类的指针或引用调用重写的虚函数时,当指向父类调用的就是父类的虚函数,当指向子类调用的就是子类的虚函数。 2:多态的对象模型 单继承class Base{pub原创 2017-07-31 23:59:17 · 273 阅读 · 0 评论 -
构造函数和拷贝构造的N种调⽤情况
1:C++对传参和传返回值时构造的优化处理 传参数时,传引用比传值减少一次拷贝构造; 传返回值时,编译器会进行优化,返回值在一个表达式内也会进行优化。 一般而言,调用构造和拷贝构造的次数 = 调用析构函数的次数。2:讨论传值和传返回值得各种情况 先写一个Date类,以它的调用情况为例:#include<iostream>using namespace std;class Date{pub原创 2017-07-25 21:54:17 · 425 阅读 · 0 评论 -
String的增删查改的实现
String类主要模拟实现string(库)中字符串的增删查改操作。有插入一个字符,插入一个字符串,删除一个特定位置的字符,删除特定位置特定的字符串,头插,头删,尾插,尾删,可以复用Insert()和Erase()函数。字符串比较,字符相同则同时向后走,当字符串相同,或有不同的字符时返回相应的结果。具体操作如下:#pragma warning(disable:4996)//禁止报strcpy的错误原创 2017-07-25 17:49:24 · 699 阅读 · 0 评论 -
String的深拷贝
String的深拷贝是一种拷空间拷数据的方法。String的浅拷贝是一种拷数据的方法,只是将指针指向同一块空间,在析构的时候会出错,同一个空间释放多次。深拷贝就是解决浅拷贝的析构问题,但深拷贝会有开辟空间的开销。对此,提出引用计数的浅拷贝,也就是写时拷贝。写时拷贝在下一篇博客中写。 #include<iostream>using namespace std;//传统写法:开空间,拷数据cla原创 2017-07-23 21:01:04 · 1316 阅读 · 0 评论 -
继承与菱形继承
1.面向对象的程序设计的三大要素是封装、继承、多态。封装是用访问限定符将成员变量和成员函数包装,以实现不同权限的访问目的,访问限定符有public、protected、private。一般的将成员函数设为private,成员函数设为public或protected。 继承是面向对象复用的重要手段,子类继承父类,是两个类型之间的关系建模,共享公有的东西,实现各自本质不同的东西。在继承关系里,派生类继原创 2017-07-26 18:39:21 · 346 阅读 · 0 评论 -
C++实现顺序表
C++实现顺序表顺序表是用数组来实现的,把数据放在数组中,实现其基本的增删查改。以下为实现源代码: //C++实现顺序表**strong #pragma once#include<iostream>#include<assert.h>using namespace std;typedef int DataType;class SeqListclass SeqList{ publi原创 2017-07-21 18:44:35 · 791 阅读 · 0 评论 -
C++中的几个概念
C++中的几个概念1.命名空间 关键字:namespace 目的:为了解决变量命名冲突的问题,同一个变量名a在不同的作用域下,含义是不同的。#include<iostream>using namespace stdnamespace AA1{ int a =10;//在AA1::a中}namespace AA2{ int a = 20;//在AA2::a中 name原创 2017-06-25 17:01:45 · 443 阅读 · 0 评论 -
atoi和itoa的模拟实现
1.atoi函数:函数原型:int atoi (const char * str);该函数的功能是将字符串转化为整型。分以下几种情况:1)如果该字符串的最开始是 -,并且后面加的是数字,那么转化的整数是负整数。2)如果该字符串的最开始是+ 或者是数字,那么转化的是正整数。3)如果最开始是-/+ 加其他字符,就是不合法的,直接返回0.4)考虑溢出,正溢出和负溢出。模...原创 2018-08-17 11:53:53 · 417 阅读 · 0 评论