C++学习笔记
文章平均质量分 51
C++学习
欲盖弥彰1314
如有一味绝境,非历十方生死。
展开
-
C++编译错误 — error: ‘xxx‘ declared as a ‘virtual‘ field
编译出错代码段:class AbstractFoodFactory{public: virtual Vegetable *getVegetable(string type) = 0; virtual Fruit *getFruit(string type) = 0;};出现错误:D:\CodeBlockPrj\AbstractFactoryMode\abstractFoodFactory.h|12|error: 'getVegetable' declared as a 'vir原创 2020-08-29 23:48:53 · 1045 阅读 · 0 评论 -
C++STL感知—stack容器和queue容器
栈容器栈数据结构头文件:#include <stack>构造函数:stack<type> s1; //无参构造stack<type> s(s1); //拷贝构造赋值:stack<type> s1; //无参构造stack<type> s; s = s1; 数据存取:入栈stack.push(elem);出栈stack.pop();获取栈顶元素stack.top();原创 2020-07-29 09:19:20 · 168 阅读 · 1 评论 -
C++STL感知—deque容器
deque容器头文件:#include <deque>构造函数void show_deque(deque<int> d){ for (deque<int>::iterator id = d.begin(); id != d.end(); id++) //利用迭代器遍历deque容器 { cout << (*id) << " "; } cout << endl;}void原创 2020-07-27 11:46:53 · 124 阅读 · 0 评论 -
C++STL感知—vector容器
vector容器vector容器非常类似数组,也称单端数组vector容器的迭代器支持随机访问与数组不同:数组是在静态空间分配,vector可以动态扩展动态扩展原理:重新分配空间,将原空间数据拷贝到新空间,再释放原空间构造函数创建vector容器void get_vector(void){ vector<int> v; //无参构造 for (int i = 0; i < 20; i++) { v.push_back原创 2020-07-26 14:00:21 · 153 阅读 · 1 评论 -
C++STL感知—string容器
string容器在C++中经常如下定义字符串string str;而string本质是C++中的一个类。char *是一个指针,string类内部封装了char *string类的构造函数:string(); //创建控的字符串sring(const char *s); //使用s初始化字符串string(const string &str); //拷贝构造函数,使用另一个字符串初始化初始化字符串string(int n, char c); //使用n个字符c初始化字符串原创 2020-07-25 21:35:19 · 115 阅读 · 0 评论 -
C++STL初识
STL基本介绍STL —— Standard Template Library,标准模板库广义上分为容器(container)、算法(algo)、迭代器(interator)容器和算法通过迭代器衔接几乎所有代码都采用了模板类或模板函数实现STL六大组件容器、算法、迭代器、仿函数、适配器、空间配置器核心组件容器实现了运用最广泛的一些数据结构常用数据结构:数组、链表、树、栈、队列、集合、映射表等分类: 序列式容器 —— 容器每个元素具有固定位置 关联式容器 —— 容器中元素原创 2020-07-24 14:13:39 · 230 阅读 · 2 评论 -
C++流和文件操作
C++流和文件操作C++中流的概念C++中输入输出操作使用流来完成,将输出输入的操作称为流类,实现流类的库为流类库流类库头文件 #include <iostream>C++常用流类派生关系:ios抽象的基类istream输入的流类。cin为该流类的对象ostream输出的流类。cout为该流类的对象ifstream读取文件数据流类o...原创 2020-04-23 16:27:16 · 405 阅读 · 2 评论 -
C++异常处理
C++异常处理程序错误大致有三种:语法错误编译链接阶段可以发现逻辑错误编写程序逻辑错误,达不到预期的目标,通过调试排查解决运行时错误程序编译链接解决都没有出错,语法完全符合规则,但是在运行时候程序出错,严重的终止程序运行(程序崩溃)C++异常处理机制为捕获解决运行时错误而诞生,给程序复活的机会,至少告诉用户发生了什么严重故障再终止程序异常类头文件...原创 2020-04-22 22:05:13 · 249 阅读 · 0 评论 -
C++多态
C++多态多态——面向对象编程三大特性之一主要通过虚函数和纯虚函数实现多态。多态种类静态多态函数重载和运算符重载属于静态多态————编译阶段确定函数地址动态多态派生类和虚函数实现运行时多态————运行阶段确定函数地址动态多态满足的条件:有继承关系派生类重写基类中的虚函数虚函数实现多态案例:class BaseCalc{public: virtu...原创 2020-04-20 11:36:50 · 154 阅读 · 0 评论 -
C++拷贝构造函数&浅拷贝和深拷贝
拷贝构造函数构造函数可以没有,也可以有多个。复制构造函数只有一个,不定义编译器自动生成,用户写就使用自定义的复制构造函数复制构造函数起作用的三种情况用一个对象去初始化同类的另一个对象<类名> c2(c1); //用c1对象来初始化c2,其中起作用的就是复制构造函数<类名> c2 = c1; //初始化语句,非复制语句,同上语句函数有一个参数...原创 2020-04-14 01:35:28 · 154 阅读 · 0 评论 -
C++函数以及函数重载
函数默认参数函数某个形参有默认参数值,其后面的参数都必须有默认参数值int fun(int a, int b = 10, int c = 3) //正确{ }int fun(int a, int b = 10, int c) //错误{ }函数声明有默认参数值,实现就不能有函数值正确:void fun(int a = 10, int b = 20);...原创 2020-04-12 17:44:35 · 194 阅读 · 0 评论 -
C++友元函数和友元类
C++友元为什么要存在友元?由于类的封装特性,私有成员不能直接被访问,只有类的成员函数才能进行访问。外部函数想要访问类的私有成员必须通过类的公有成员访问。这种方式要经过参数传递检查等过程,运行效率低。C++直接提供的访问类私有成员方法:友元友元函数:实现不同对象函数成员之间或函数成员和一般函数之间的数据共享。可以访问类中所有成员——私有、保护以及公有成员函数为一般函数—...原创 2020-04-11 00:57:55 · 516 阅读 · 1 评论 -
C++静态成员变量和静态成员函数
静态成员变量和静态成员函数class ClassA{ int a; int b; static int c; //静态成员变量 static void xxx_fun() //静态成员函数 { ... }}普通成员变量每个对象都有各自的一份,静态成员变量所有对象共享。普通成员函数每个对象都有各自的一份,静态成员函数所有对象共享,内存只有一份。静态成员函...原创 2020-04-10 23:41:50 · 202 阅读 · 2 评论 -
C++函数模板和类模板
函数模板作用用来定义通用函数。作用类似重载,编码比重载简单。利用函数模板定义的函数叫模板函数。模板函数参数列表中,至少要有一个参数类型是模板的参数类型,函数返回值也可以是模板参数类型定义形式:template <class T>T <函数名> ( T para1 ){ ...}template <class T>T &...原创 2020-04-09 00:04:17 · 217 阅读 · 0 评论 -
C++动态内存
C++程序内存来源:栈函数内部定义的变量存放在栈中。堆程序未使用内存,运行时可动态分配动态分配管理分配内存从堆中分配内存。不建议使用malloc运算符:new语法:<data type> <pointer> = new <data type>;int *p = new int数组分配内存:<data typ...原创 2020-04-04 21:43:27 · 136 阅读 · 0 评论 -
C++函数参数传递三种方式
C++函数参数传递三种方式值传递特点:函数调用时将实参的值复制给形参,形参做任何改变不影响实参的值void swap(int a, int b){ int tmp = a; a = b; b = tmp;}int main(){ int x = 20; int y = 10; swap(x, y); //值传递 所以x,y的值不能交换 ret...原创 2020-04-03 23:31:20 · 405 阅读 · 4 评论 -
C++类的继承和派生
C++ 类的继承面向对象程序设计的三大特性之一:继承人类可以封装成一个类,学生是一个类。由于学生也是人类,所以可以继承人类这个类中的方法和属性。类man称为父类、基类或者超类类Student称为派生类、子类UML图:类成员的访问控制和继承√——可以访问×——不可以访问类不想被访问的私有数据声明为private访问的类publicprivateprotected...原创 2020-04-03 17:41:50 · 717 阅读 · 0 评论 -
C++ 类&对象&成员
C++ 类和对象类是对一组对象共性的抽象包含成员和方法,成员和方法都属于类的成员。成员描述对象的属性,方法描述了对象的行为。类是 C++ 的核心特性,用户自定义类型。对象可以是人们要研究的任何事物,万事万物均可看作对象,从简单的整数到复杂的飞机、卫星等均可以看作对象类的定义class Student{ char name[20]; //名字 类的属性 默认为私有...原创 2020-04-03 17:40:52 · 1458 阅读 · 0 评论 -
C++指针和引用的区别及引用的用法意义
C++指针和引用的区别C++的指针C语言的概念一样。使用引用来替代指针,会使 C++ 程序更容易阅读和维护主要不同:不存在空引用,引用必须链接到一块合法的内存引用一旦初始化为一个对象,就不能指向一个对象。指针任何时候指向另一个对象引用必须在创建的时候就被初始化,指针可以在任何时候初始化引用的用法int a = 28; int &b = a; //定义引用...原创 2020-04-03 17:33:43 · 341 阅读 · 0 评论