c++基础
C++语言基础语法
Danifer
这个作者很懒,什么都没留下…
展开
-
向上取整和向下取整
取整函数对小数点后面数字不为0的树操作给一个整数, 取整就返回整数本身对小数不为0的数操作:比如:1.9调用上取整函数 得到: 2调用下取整函数 得到: 1C++内部是下取整原创 2021-03-07 14:44:01 · 1124 阅读 · 0 评论 -
内存对齐
背书式:各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数 各成员变量在存放的时候根据在结构中出现的顺序依次申请空间 同时按照上面的对齐方式调整位置 空缺的字节自动填充 同时为了确保结构的大小为结构的字节边界数(即该结构中占用最大的空间的类型的字节数)的倍数,所以在为最后一个成员变量申请空间后 还会根据需要自动填充空缺的字节...原创 2021-03-01 20:02:07 · 47 阅读 · 0 评论 -
OOP多态
###多态的定义(调用虚函数来实现多态)多态(不同的对象完成相同的行为,展现不同的形态)是运行时多态通过虚函数来实现,就是通过定义基类的指针或引用来调用一个虚成员函数是会动态绑定,动态的绑定是指针或引用绑定的具体的对象,在运行是的时候,调用的方法是这个指针或引用所绑定的具体的对象的方法,而不是基类的方法.(通过定义基类的指针或引用来指向不同的对象,在运行的时候调用具体的虚函数的方法是这个基类指针或引用所指向的具体的对象的虚函数,而不是基类虚函数)####注意事项:1.虚函数必须是有定义,因为需要动态绑原创 2021-03-01 19:47:44 · 299 阅读 · 0 评论 -
程序的内存结构
在程序运行前:BSS段(未初始化数据区):用于存放程序中未初始化的全局变量和静态变量,程序结束后由资源有系统自动释放(BSS段并不存放在程序文件中,因为内核在程序运行前将他们设置为0,存放在程序文件中的只有代码段和已初始化数据区)data(已初始化数据区): 用于存放已初始化的全局变量和静态变量.text(代码段)存放代码和只读的常量程序运行时:栈区:栈中存放函数参数和局部变量,由编译器自动释放,每当一个函数被调用时,函数的返回值和调用信息被保存到栈中,然后被调用的函数会在栈上为它的自动变量和临.原创 2020-09-13 23:19:09 · 507 阅读 · 0 评论 -
容器适配器
标准库中提供了三种容器适配器:queue priority_queue stack容器适配是借助已有的容器来实现一种抽象类型不同的数据结构原创 2020-09-01 10:36:43 · 67 阅读 · 0 评论 -
深浅拷贝
浅拷贝就是对资源的的引用或指针进行单纯的赋值深拷贝就是另外开辟空间将原来空间的资源拷贝到新空间中class A { public: A(int _size) : size(_size) { data = new int[size]; } // 假如其中有一段动态分配的内存 A(){}; ~A() { delete [] data; } // 析构时释放资源 private: int* data; int size; }int main() { A a(原创 2020-09-01 09:01:39 · 91 阅读 · 0 评论 -
虚表
对象没有虚函数表,对象只有一个虚函数的指针vptr,指向在存在代码段的虚表.在单继承的子类中,子类只维护一张虚表总结:vtable是属于类的,存在代码段中,含有虚函数的对象中有vptr指向vtable原创 2020-08-16 00:37:14 · 163 阅读 · 0 评论 -
inline函数
inline函数的目的是为了提高程序执行的效率,inline函数的使用方法是将inline放在函数的定义处,而不是声明处./*错误inline int fun(int x,int y);int fun (int x,int y) { ... }*/int fun (int x,int y);inline int fun (int x,int y) {...}程序在执行到inline函数的时候,会直接将inline函数展开,这样将节省了函数掉的将要保存的代码执行时保存断点和执行完函数后恢复调用原创 2020-08-10 12:13:10 · 561 阅读 · 0 评论 -
用两个栈实现一个队列
思想:当stack2中不为空时,在stack2中的栈顶元素是最先进入队列的元素,可以弹出。如果stack2为空时,我们把stack1中的元素逐个弹出并压入stack2。由于先进入队列的元素被压倒stack1的栈底,经过弹出和压入之后就处于stack2的栈顶,有可以直接弹出。如果有新元素d插入,我们直接把它压入stack1即可。class Solution{public: void ...原创 2019-10-29 00:22:45 · 91 阅读 · 0 评论 -
进度条函数
#include <stdio.h>#include <windows.h>int main(){ char arr[51] = { 0 }; const char* lp = "|/-\\"; for (int i = 0; i < 50; i++) { arr[i] = '#'; // /r printf("[%-50s][%d%...原创 2019-10-25 23:09:30 · 441 阅读 · 0 评论 -
最小栈的实现
最小栈的实现:定义两个栈,一个数据栈,一个最小栈;如果最小栈为空就直接把number压人栈中最小栈不为空,就把number与最小栈的栈顶元素进行比较,如果小于最小栈的栈顶元素,就把number压入最小栈,否则就把number压入datastack中,最后返回最小栈的栈顶元素就是最小值#include<iostream>#include<stack>using ...原创 2019-10-24 12:26:25 · 157 阅读 · 0 评论 -
二叉树前序遍历
树的前序遍历:根左右可以设计一个栈来实现:首先让根root入栈,然后root出栈,pop掉栈顶的元素,打印root,然后把root的右孩子入栈,左孩子入栈,让栈顶的元素变成新的root,pop掉栈顶的元素,打印root,然后把root的右孩子入栈,左孩子入栈,重复此步骤#include#include#includeusing namespace std;typedef stru...原创 2019-10-23 15:05:45 · 174 阅读 · 0 评论 -
继承1
继承一、什么是继承?C++允许一个类继承另外一个类的所有内容提高了代码的复用性二、继承的方式public :2 可访问 可继承protected :1 不可访问 可继承private :0 不可访问 不可继承派生类中继承来的元素是什么权限,取决于继承方式和基类成员权限的较小值。基类的private成员在派生类中不可访问三、隐藏当派生类中存在和基类重名的成员变量或成员...原创 2019-10-23 13:40:24 · 137 阅读 · 0 评论