c++
陆尔尔
这个作者很懒,什么都没留下…
展开
-
stringstream常见用法介绍
本文主要介绍 C++ 中 stringstream 类的常见用法。1 概述 定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作。本文以 stringstream 为主,介绍流的输入和输出操作。 主要用来进行数据类型转换,由于 使用 string 对象来代替字符数组(snprintf方式),就避免缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。简单说,相比c库原创 2020-08-18 11:22:40 · 177 阅读 · 0 评论 -
单例模式
什么是单例模式单例模式,顾名思义就是只有一个实例,并且她自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。下面我们来看下有哪几种实现方式吧。单例模式的实现方式懒汉模式:懒汉式,顾名思义就是实例在用到的时候才去创建,“比较懒”,用的时候才去检查有没有实例,如果有则返回,没有则新建。有线程安全和线程不安全两种写法,区别就是synchronized关键字。public class Lhan{ private static Lhan instance;转载 2020-08-03 09:14:36 · 127 阅读 · 0 评论 -
十大排序算法
快速排序找基准数,大数放右边,小数放左边,递归排序从后往前找小数,从前往后找大数#include<iostream>#include<vector>#include<algorithm>void quicksort(vector<int>&nums,int low,int high){ int i=low,j=high; int temp=nums[low]; while(i<j){ while(nums[j]<te原创 2020-07-29 23:01:01 · 109 阅读 · 0 评论 -
左值引用和右值引用
1.左值和右值在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)。举个例子,int a = b+c, a 就是左值,其有变量名为a,通过&a可以获取该变量的地址;表达式b+c、函数int func()的返回值是右值,在其被赋值给某一变量前,我们不能通过变量名找到它,&(b+c)这样的操作则不会通过编译。左值是可以放在赋值号左边可以被赋值的值;左值必须要在内存中有实体;右值当在赋值号右边取出值赋给其他变量的值;右值可以在内存也可以在CPU寄存原创 2020-07-25 17:23:08 · 8712 阅读 · 3 评论 -
c++11新特性
参考c++11新特性1、关键字及新语法1.1、auto关键字及用法1.2、nullptr关键字及用法1.3func,static_assert,final,override关键字1.4 for循环语法2、STL容器2.1、std::array2.2、std::forward_list2.3、std::unordered_map2.4、std::unordered_set3、多线程3.1、std::thread3.2、st::atomic3.3、std::condition_variable4、智能指针内存原创 2020-07-25 16:35:11 · 500 阅读 · 0 评论 -
虚函数的作用
虚函数的作用:可以让成员函数操作一般化,用基类的指针指向不同的派生类的对象时,基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数,而不是基类中定义的成员函数(只要派生类改写了该成员函数)。若不是虚函数,则不管基类指针指向的哪个派生类对象,调用时都会调用基类中定义的那个函数。程序1:#include <iostream>using namecpace std;class B0 //基类B0声明{ public: void display(){cout<&原创 2020-07-24 18:15:43 · 5891 阅读 · 0 评论 -
c++类和对象
类的六个默认成员函数构造函数类的特殊成员函数,函数名和类名相同,无返回值,在创建对象期间,由编译器自动调用,完成对象的初始化工作,并在整个对象的生命周期只调用一次。构造函数的特性无返回值可以重载用户没有显示调用,编译器会自动调用一个默认的构造函数不能用const,virtual,static修饰具有初始化列表只有构造函数才具有初始化列表,只能在初始化列表中非静态成员类成员变量在初始化列表中只能初始化一次初始化顺序与类成员列表中顺序相同避免成员初始化成员必须在初始化列表中初始化的原创 2020-07-24 14:50:00 · 72 阅读 · 0 评论 -
c++ 函数重载和宏替换
函数重载函数重载指的是,在同一作用域中,几个同名函数拥有不同的参数个数,类型或顺序,编译器会推演函数实参类型,选择合适的函数进行调用,若没有的话就会报错,注意:仅仅返回类型不同不能构成函数重载调用原理编译器为了区分每一个函数,对每一个函数的名字进行了修饰,使它成为全局唯一的函数。c++为什么支持函数重载即使函数名字相同,也会因为不同的参数个数,类型和顺序,产生不同的函数名字,对应着不同的函数,从而实现函数重载宏替换预处理的一种,它根据一系列预定义的规则,替换一定的文本模式宏常量#defi原创 2020-07-24 14:29:57 · 463 阅读 · 0 评论 -
c++中static关键字作用
一、普通的static关键字静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:1.1 该变量在全局数据区分配内存(1)未经初始化的静态全局变量会被程序自动初始化为0( 在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0);(2)静态全局变量在声明它的整个文件都...转载 2020-03-19 09:41:48 · 341 阅读 · 0 评论 -
c++复习 多态
虚函数什么是虚函数?指向基类的指针在操作它的多态类对象时,会根据不同的类对象调用其相应的函数,这个函数就是虚函数,用virtaul修饰函数名。虚函数的作用是在程序运行阶段动态地选择合适的成员函数在派生类中重新定义的函数应与虚函数具有相同的形参个数和形参类型,(参数顺序也要一致),以实现统一接口,如果派生类中没有重新定义虚函数,则它集成基类的虚函数虚函数的重写虚函数的重写:派生类中有一个...原创 2020-02-18 16:04:28 · 144 阅读 · 0 评论 -
C++复习 友元函数 内部类
友元函数类具有封装,继承,多态,信息隐藏的特性,只有类成员函数才能访问类的私有成员,非类的成员函数只能访问类的公有成员,但若把类设成public,又会破坏信息隐藏的特性,所以引入友元函数。注意:友元函数不是类的成员函数,不受public,private,protected的影响调用友元函数时,在实际参数中需指出要访问的对象类与类之间的友元关系不能被继承。(友元不属于类的成员函数)友元...原创 2020-02-13 13:44:01 · 326 阅读 · 0 评论 -
c++动态内存管理
C/C++中程序内存区域划分栈:又叫堆栈,存储非静态局部变量,函数参数,返回值内核映射段:高效I/O映射方式堆:用于程序运行时,动态内存分配数据段:存储全局数据和静态数据代码段:可执行的代码/只读常量C++内存管理方式通过new/delete操作符来管理内存void Test(){ // 动态申请一个int类型的空间 int* ptr4 = new int; // 动...原创 2020-02-11 16:20:31 · 104 阅读 · 0 评论 -
深浅拷贝
拷贝构造函数拷贝构造函数是一种特殊的构造函数,是构造函数的重载形式。分三种形式:不可变类型不存在深浅拷贝浅拷贝,只拷贝对象本身,拷贝时只会增引用,不会拷贝对象中的元素深拷贝不但拷贝对象本身,还拷贝了其中的元素。浅拷贝用户未显示定义,而是由系统生成的默认的拷贝构造函数,称为浅拷贝void test(){ String S1("hello"); String S2(S1);...原创 2020-02-10 15:46:35 · 111 阅读 · 0 评论 -
const成员
const,表示不可变的,用const关键字保存程序元素不变const修饰变量const int i=10;const修饰变量i,使i变为常量,若修改i的值编译器会报错。const修饰指针1. 指向const变量的指针const char *u;char const *v;const在*左边,在类型左边右边都可以,v和u都表示一个指针,指向const char类型变量的指针。...原创 2020-01-15 16:34:10 · 151 阅读 · 0 评论 -
c++继承
继承格式继承方式(1)子类拥有父类所有的成员变量和函数.(2)子类可以拥有父类没有的方法和属性。class Student{ public: Student(string s,int g,int a) { cout <<"Student" << endl; name=s.grade=g,age=a; } void printf...原创 2020-01-14 14:49:03 · 139 阅读 · 0 评论 -
c++入门
命名空间定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空 间的成员。普通的命名空间普通的命名空间namespace N1{ int a=20; int Add(int left,int right) { return left+right;//既可以放变量,也可以放函数,但不可在相同作用域放名字相同的变量 }...原创 2019-03-22 11:51:50 · 91 阅读 · 0 评论 -
类和对象(1)
1.类与对象的初步认知C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。数据和操作数据的方法是分离开的。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。结构体中不仅仅可以放数据,也可以放函数。2.类的引入C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。struct Student...原创 2019-04-10 20:06:54 · 168 阅读 · 0 评论 -
c++入门(2)
宏常量引起的缺陷#define PI "3.14"int main(){ const int a=10;//常量,具有宏的属性,有类型,可以参加编译 int *pa=(int*)&a;//a=100 *pa=100;//*pa=100 cout<<a<<endl; // cout<<*pa<<endl; return 0...原创 2019-03-29 10:09:35 · 106 阅读 · 0 评论 -
auto关键字
auto简介在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人 去使用它,大家可思考下为什么?C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指 示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。int main(){ auto a=10; //整型 ...原创 2019-04-03 14:32:28 · 360 阅读 · 0 评论 -
类和对象(2)
类的6个默认成员函数空类class{ };//大小为一个字节构造函数例:日期类class Date{ public: void InitDate(int year,int month,int day) { _year=year; _month=month; _day=day; } void PrintDate() { cout&l...原创 2019-04-13 21:38:35 · 199 阅读 · 0 评论 -
c++引用&和内联函数
概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引 用的变量共用同一块内存空间。类型& 引用变量名(对象名) = 引用实体int main(){ int a=10; int &ra=a; printf("%p\n", &a); printf("%p\n", &ra); } 引用的特性...原创 2019-03-25 09:52:30 · 142 阅读 · 0 评论