-
20、map
目录 mapmaphttps://blog.csdn.net/qq_21997625/article/details/84672775Map的使用:https://www.w3cschool.cn/cpp/cpp-fu8l2ppt.html1、需要导入头文件 #include <map> // STL头文件没有扩展名.h2、map 对象是一个模版类,需要关键字和存储对象两个模版参数 std::map<int , std::string> per...…
-
19、array
目录 C数组 vector listC数组void array_constructor_test(){ { double balance0[10]; double balance1[5] = {1000.0, 2.0, 3.4, 7.0, 50.0}; double balance2[] = {1000.0, 2.0, 3.4, 7.0, 50.0}; balance0[4] = 50.0; } ...…
-
18、string
目录 C字符串 stringC字符串void cstring_Test(){ //实现方式一: char str1[6] = {'h','e','l','l','o','\0'}; cout<<"str1 = "<<str1<<endl; //实现方式二: char str2[6] = "hello"; cout<<"str2 = "<<str2<<endl; ...…
-
17、异常、智能指针
目录 异常 智能指针 unique_ptr 智能指针与数组 shared_ptr的循环引用异常一、异常编程过程中的常见错误类型 语法错误 逻辑错误 异常 ……异常是一种在程序运行过程中的发生的不好预测的错误(比如内存不够) 异常没有被处理,会导致程序终止为了增强可读性和方便团队协作,如果函数内部可能会抛出异常,建议函数声明一下异常类型//int divide(int v1,int v2) throw(){//不抛出任何异常//int divide(int v1,int ...…
-
16、类型转换、C++新特性
目录 类型转换 C++11 C++14 C++17类型转换C语言风格的类型转换符 (type)expression type(expression)C++中有4个类型转换符 static_cast dynamic_cast reinterpret_cast const_cast 使用格式:xx_cast(expression)class Person{public: int m_age; virtual void run(){ ...…
-
15、模板
目录 函数模板 多参数模板 类模板模板(template) 泛型,是一种将类型参数化以达到代码复用的技术,C++中使用模板来实现泛型模板的使用格式如下 template <typename\class T> typename和class是等价的模板没有被使用时,是不会被实例化出来的 模板的声明和实现如果分离到.h和.cpp中,会导致链接错误 一般将模板的声明和实现统一放到一个.hpp文件中函数模板template <class...…
-
14、运算符重载、仿函数(函数对象)
目录 运算符重载一 运算符重载二 单例模式补充 仿函数运算符重载一LCPoint.hpp#ifndef LCPoint_hpp#define LCPoint_hpp#include <stdio.h>#include <iostream>using namespace std;class LCPoint{ friend ostream &operator<<(ostream &,const LCPoint &);pu...…
-
13、匿名对象、默认构造函数、隐式构造、内部类、局部类
目录 对象类型的参数和返回值 匿名对象(临时对象) 隐式构造 默认构造函数 友元 内部类 局部类对象类型的参数和返回值//使用对象类型作为函数的参数或者返回值,可能会产生一些不必要的中间对象class Car{private:public: int m_price; Car(int price = 0):m_price(price){ cout << "Car(int) - " << this << " - " &...…
-
12、static、const、引用成员、拷贝构造函数、深、浅拷贝
目录 静态成员 静态成员经典应用 - 单例模式 const成员 引用类型成员 拷贝构造函数 深拷贝、浅拷贝静态成员静态成员 被static修饰的成员变量\函数 可以通过对象(对象.静态成员)、对象指针(对象指针->静态成员)、类访问(类名::静态成员)静态成员变量 存储在数据段(全局区,类似于全局变量),整个程序运行过程中只有一份内存 对比全局变量,它可以设定访问权限(public、protected、private),达到局部共享的目的 ...…
-
11、多继承
目录 多继承 多继承体系下的构造函数调用 多继承-虚函数 同名函数、同名成员变量 菱形继承 虚继承 多继承的应用多继承C++允许一个类可以有多个父类(不建议使用,会增加程序设计复杂度)class Student{public: int score; virtual void study(){ cout<<"Student::study()"<<endl; } Student(){ cout&l...…
-
10、虚函数、虚函数表、纯虚函数、抽象类
目录 虚函数 虚析构函数 纯虚函数虚函数C++中的多态通过虚函数(virtual function)来实现虚函数:被virtual修饰的成员函数只要在父类中声明为虚函数,子类中重写的函数也自动变为虚函数(也就是说子类中可以省略virtual关键字)虚函数的实现原理是虚表,这个虚表里面存储着最终需要调用的虚函数地址,这个虚表也叫虚函数表class Animal{public: int age;// void speak(){// cout<<"An...…
-
9、初始化列表、多态
目录 初始化列表 父类的构造函数 父类指针与子类指针 多态初始化列表特点 一种便捷的初始化成员变量的方式 只能用在构造函数中 初始化顺序只跟成员变量的声明顺序有关一、下面的2种写法是等价的struct Person{ int _age; int _height; Person(int age,int height){ this->_age = age; this->_height = height; ...…
-
8、析构函数、命名空间、类的声明和实现
目录 析构函数的作用 命名空间 类的声明与实现 继承 成员访问权限析构函数的作用class Car8{public: int price; Car8(){ cout<<"Car::Car()"<<endl; price = 2000; } ~Car8(){ cout<<"Car::~Car()"<<endl; }};class Person8{...…
-
7、封装、内存布局、malloc、free、new、delete
目录 封装 内存空间布局 对象的内存 memset的使用 构造函数 默认情况下,成员变量的初始化 析构函数封装成员变量私有化,提供公共的getter和setter给外界去访问成员变量有些变量我们不希望外界访问,那么我们就把该变量私有化,这样的好处是: 外界无法直接访问可以过滤数据,比如下面的age赋值小于0时就直接返回class Person{private: int _age;public: int m_id; int m_age; int m_...…
-
6、类、对象及对象内存布局
目录 struct和class的用法 C++编程规范 对象的内存布局 this指针struct和class的用法一、面向对象的常见知识点类、对象成员变量、成员函数封装、继承、多态二、struct与classC++中可以使用struct/class来定义一个类 struct和class的区别 struct的默认成员权限是public class的默认成员权限是privatestruct定义一个类//类的定义struct Person{ //成员变量 int a...…
-
5、引用的本质(二)
目录 通过汇编分析指针 通过汇编分析引用 其它数据类型的引用 常引用 常引用可以指向临时变量通过汇编分析指针void pointerNature(void){ int age = 3; int *p = &age; *p = 5; /** 0x100009c40 <+0>: pushq %rbp 0x100009c41 <+1>: movq %rsp, %rbp ...…
-
4、引用的本质
目录 引用 引用与指针 引用的本质 寄存器 汇编指令引用在C语言中,使用指针(Pointer)可以间接获取、修改某个变量的值 在C++中,使用引用(Reference)可以起到跟指针类似的功能注意点 1、引用相当于是变量的别名(基本数据类型、枚举、结构体、类、指针、数组等,都可以有引用) 对引用做计算,就是对引用所指向的变量做计算2、在定义的时候就必须初始化,一旦指向了某个变量,就不可以再改变,“从一而终”3、可以利用引用初始化另一个引用,相当于某个...…
-
3、内联函数、const
目录 内联函数 const内联函数使用inline修饰函数的声明或者实现,可以使其变成内联函数 建议声明和实现都增加inline修饰特点 编译器会将函数调用直接展开为函数体代码 可以减少函数调用的开销 会增大代码体积注意 尽量不要内联超过10行代码的函数 有些函数即使声明为inline,也不一定会被编译器内联,比如递归函数内联函数与宏 内联函数和宏,都可以减少函数调用的开销 对比宏,内联函数多了语法检测和函数特性 思考以下代码的区别#define sum(x)...…
-
2、cin、cout、函数重载、extern C、默认参数
目录 C++中常使用cin、cout进行控制台的输入、输出 函数重载 extern “c” 默认参数C++中常使用cin、cout进行控制台的输入、输出参考文章:https://blog.csdn.net/zhanghaotian2011/article/details/8868577cin用的右移运算符» cout用的是左移运算符« endl是换行的意思cout语句的一般格式为:cout«表达式1«表达式2«……«表达式n; cin语句的一般格式为:cin»变量1...…
-
1、简介
没有C语言基础的同学,建议先快速学习一下C语言】 C语言快速入门目录 C++的应用领域C++的应用领域一、应用领域游戏(Cocos2d-X)、图像、多媒体、网络、嵌入式数据库(Oracle、MySQL)、浏览器(Chrome)、搜索引擎(Google)操作系统、驱动程序、编译器(GCC、LLVM)、编程语言(Swift)HPC(High Performance Computing,高性能计算)iOS开发(Runtime、AsyncDisplayKit)Android开发(NDK、fre...…