C++基础
文章平均质量分 64
牛牛coding
念念不忘,必有回响。
展开
-
C++11 智能指针
为了更加容易安全的管理动态内存,新的标准库提出了两种智能指针类型来管理动态对象;两种指针的区别是管理底层指针的方式:shared_ptr允许多个指针指向同一个对象;unique_ptr 独占所指向对象;weak_ptr 是一种弱引用。在<memory>头文件中1、shared_ptr:① 对象需要共享时用shared_ptr,智能指针是个模板类,可以指定类型,传入指针通过构造函数初始化,不能将指针直接赋值给一个智能指针,一个是类,一个是指针,使用make_shared初始化。多个指针指向相原创 2021-10-13 11:25:16 · 194 阅读 · 0 评论 -
C++: volatile + const + extern + static
1、Volatile①volatile和 const 对应,用来修饰变量,volatile 关键字是一种类型修饰符。②一个定义为volatile的变量说明该变量可能会被意想不到地改变(操作系统、硬件或者其它线程),所以编译器每次操作该变量时一定要从内存中真正取出,而不是使用已经存在寄存器中的值,因此编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。③一般用在并行设备的硬件寄存器(如:状态寄存器)+ 多线程应用中被几个任务共享的变量。2、constconst 基本原理 : 被原创 2021-08-17 22:28:42 · 199 阅读 · 0 评论 -
C++三大特性
C++ 三大特性(1)继承让某种类型对象获得另一个类型对象的属性和方法。它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。常见的继承有三种方式:实现继承:指使用基类的属性和方法而无需额外编码的能力。接口继承:指仅使用属性和方法的名称、但是子类必须提供实现的能力。例如,将人定义为一个抽象类,拥有姓名、性别、年龄等公共属性,吃饭、睡觉、走路等公共方法,在定义一个具体的人时,就可以继承这个抽象类,既保留了公共属性和方法,也可以在此基础上扩展跳舞、唱歌等特有方原创 2021-08-15 21:41:16 · 1002 阅读 · 0 评论 -
C++虚函数相关知识总结!
1、什么是虚函数,虚函数的工作方式当基类希望派生类定义适合自己的版本,就将这些函数声明为虚函数(virtual)。类中有虚函数,就会创建一个虚函数表。编译器处理虚函数的方法是:为每个类对象添加一个隐藏成员,隐藏成员中保存了一个指向函数地址数组的指针,称为虚表指针(vptr),数组为虚函数表。虚函数依赖虚函数表工作的,表来保存虚函数地址,当我们用基类指针指向派生类时,虚表指针vptr指向派生类的虚函数表。 这个机制可以保证派生类中的虚函数被调用到。2、虚函数表的存放内容2.1 单继承:虚函数表的每原创 2021-07-13 22:03:13 · 558 阅读 · 0 评论 -
常见字符串函数实现strstr,strcpy,strlen,strcat,strcmp
常见字符串函数实现1、strstrstrstr(str1,str2) 函数用于判断字符串str2是否是str1的子串(hello,ll----->2)KMP算法---->字符串单模匹配的模型 void getNext(int* next, const string& s) { int j = 0; next[0] = 0; for(int i = 1; i < s.size(); i++) {原创 2021-06-27 21:30:24 · 220 阅读 · 0 评论 -
左值和右值,右值引用
左值(lvalue)和右值(rvalue)的区别一个左值是指向一个指定内存的东西。当一个对象被用作左值的时候,用的是对象在内存中的位置,用作右值的时候,用的是对象的值。下面举几个例子:①赋值运算符需要一个(非常量)左值作为左侧运算对象,结果仍是左值。 int x = 6; 6是一个右值,没有指定的内存地址,x是一个变量。一个变量有着具体的内存位置,所以是一个左值。②取地址符(&)作用一个左值对象,返回一个右值(指针)。int* y = &x; 取地址操作符&获取了x的内存地址原创 2021-06-24 22:51:39 · 132 阅读 · 0 评论 -
String 的构造函数、拷贝构造函数、析构函数和赋值函数
编写类String 的构造函数、析构函数和赋值函数,已知类String 的原型为:class String{public:String(const char *str=NULL);//普通构造函数String(const String &str);//拷贝构造函数String & operator =(const String &str);//赋值函数~String();//析构函数private:char* data;//用于保存字符串};#include &转载 2021-06-17 22:28:00 · 282 阅读 · 0 评论 -
C++常见面试题
1、C++内存分配机制。答:(1)栈(Stack):位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。其操作方式类似于数据结构中的栈。(2)堆(Heap): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。一般由malloc(或new)函数来分配内存,并且需要用free(delete)函数释放内存。(3)全局区/静态区(Global Static Area):①全局变量和静态变原创 2021-06-13 17:06:06 · 125 阅读 · 0 评论