C++
文章平均质量分 92
「已注销」
这个作者很懒,什么都没留下…
展开
-
C++基础知识(VS实现第一个程序)
一、C和C++的区别 C语言是结构化和模块化的语言,它是面向过程的。C语言善于处理小规模的程序。 C++是一种面向对象的语言,C++保留了C语言的优点,同时又引入了面向对象的机制。二、举个例子简单来区分一下面向对象和面向过程: 对于“把大象装进冰箱”这一问题,面向过程这样考虑:分三步走战略----①打开冰箱;②把大象装进去;③把冰箱门...原创 2018-04-26 10:46:10 · 18459 阅读 · 2 评论 -
C++基础知识(面向对象)
面向对象程序语言的主要特征:抽象、封装、继承和多态。1、抽象 面向对象思想就是要求程序员将程序的每一部分看成是一个抽象的对象,即程序是由一组抽象的对象组成的。这些对象根据自身的相同特征进而可以抽象表示为一个类。 例如,张三是一个人,我们把他看成是一个对象,李四也是一个人,我们把他看成是一个对象,王麻子也是一个人,我们把他看成是一个对象......他们都是具体的一...原创 2018-07-26 17:04:39 · 362 阅读 · 0 评论 -
C++基础知识(引用)
引用1、引用的基本语法 引用是C++对C的一种重要扩充。C++增添了一种给函数传递地址的途径,即按引用传递(pass-by-reference).Note:(1)变量名实际上就是一段连续内存空间的别名,是一个标号(门牌号); (2)程序中通过变量来申请并命名内存空间; (3)通过变量的名字可以使用存储空间。基本语法: Type...原创 2018-08-05 11:13:39 · 264 阅读 · 0 评论 -
C++基础知识(类和结构体)
#include<iostream>using namespace std;class CPeople //struct C++ 结构体是类的一种特定情况{public: //访问修饰符 int a; void fun() { cout << "fun" << " " << a << endl;原创 2018-08-13 16:39:19 · 1311 阅读 · 0 评论 -
C++基础知识(友元)
友元——普通函数中声明的对象可以调用类中的私有成员函数,通过类的成员函数才可以访问类的私有数据。关键字:friend#include<iostream>using namespace std;class CStu{private: int age; void fun() { age = 12; cout << age << en...原创 2018-08-13 20:19:29 · 156 阅读 · 0 评论 -
C++基础知识(构造函数)
成员函数:构造函数,析构函数,常函数,拷贝函数,内联函数以及静态成员函数。构造函数,自动调用,没有返回值。对象创建时调用。#include<iostream>using namespace std;class CStu{public: int age; float f; //构造函数,自动调用 CStu()//构造函数没有返回值 { age = 12;...原创 2018-08-15 09:27:12 · 210 阅读 · 0 评论 -
C++基础知识(初始化列表)
对数据成员进行初始化 ·可通过数值对数据成员进行初始化;#include<iostream>using namespace std;class CStu{public: int a; float f; CStu() :a(1), f(12.21) //初始化格式 { a = 13; //13将12覆盖 //cout << a <...原创 2018-08-19 10:06:51 · 1169 阅读 · 0 评论 -
C++基础知识(析构函数)
析构函数的特点:在空间释放时自动调用;析构函数没有重载;无参数;没有重载;有默认的析构函数,类比于构造函数;1、局部对象(栈区,会自动调用析构函数)#include<iostream>using namespace std;class CStu{public: int nAge; CStu() { nAge = 12; cou...原创 2018-08-19 15:01:33 · 826 阅读 · 0 评论 -
C++基础知识(常函数)
常函数: 形式: void fun() const {} 构造函数和析构函数不可以是常函数 特点:①可以使用数据成员,不能进行修改,对函数的功能有更明确的限定; ②常对象只能调用常函数,不能调用普通函数; ③常函数的this指针是const CStu*.#include<i...原创 2018-08-20 21:19:37 · 23353 阅读 · 3 评论 -
C++基础知识(命名空间)
关键字:namespace作用:通过命名空间来控制对名字的访问,避免发生命名冲突,可以更好地控制标识符的作用域。eg1:创建一个命名空间//创建一个命名空间namespace A{ int a = 10;}注意:命名空间只能全局范围内定义!!!eg2:命名空间可嵌套命名空间//嵌套命名空间namespace A{ int a = 10; ...原创 2019-05-08 10:59:21 · 142 阅读 · 0 评论 -
C++基础知识(常量)
const用于限定一个变量不允许改变。C语言中const是伪常量,可通过指针进行修改,默认为外连接,通常会分配内存空间;main.c#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>int main(void){ ex...原创 2019-05-09 09:20:59 · 347 阅读 · 0 评论 -
C++基础知识(内联函数及默认参数设置)
内联函数1、内联函数的引出 背景----预处理宏会出现2个问题 1)宏看起来像一个函数调用,但是会有隐藏一些难以发现的错误; 2)预处理器不允许访问类的成员,也就是说预处理器宏不能用作类的成员函数。 为了保持预处理器宏函数的效率,没有函数调用时开销,然后又可以像普通函数那样,可进行参数、返回值得安全检查,又可以作为成员函数。2、内联函数...原创 2019-05-09 11:13:05 · 746 阅读 · 0 评论 -
C++基础知识(函数重载)
1 、函数重载overload----概述 C++中允许出现同名函数,这种现象就叫函数重载。函数重载的目的是为了方便使用函数名。2、函数重载 2.1基本语法 实现函数重载的条件...原创 2019-05-09 11:26:44 · 588 阅读 · 0 评论 -
C++基础知识(类和对象)
现实世界中,将事物的属性和行为表示出来,就可以抽象出这个事物。 定义一个结构体用来表示一个对象所包含的属性,函数用来表示一个对象所具有的行为,这样就可以表示一个事物。在C中,行为和属性是分开的。 属性和行为应该放在一起,一起表示一个具有属性和行为的对象。封装提供一种机制能够给属性和行为的访问控制权。 所以说,封装包含两个方面:...原创 2019-05-09 11:48:43 · 218 阅读 · 0 评论 -
C++基础知识(默认拷贝构造函数调用时机)
拷贝构造函数调用时机:1、用已经创建好的对象初始化新的对象;2、以值传递的方式对函数参数进行传值;3、以值方式返回局部对象。#include<iostream>using namespace std;class Person{public: Person() { cout << "默认构造函数的调用" << endl; }...原创 2019-05-31 10:29:17 · 522 阅读 · 0 评论 -
C++基础知识(成员变量和成员函数)
1、成员变量和成员函数是分开存储的;2、空类大小:1;3、只有非静态成员属性才属于对象身上。#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;//#pragma pack(1) //#pragma pack (n) 作用:C编译器将按照n个字节对齐。最终结果不是16而是12...原创 2019-05-31 10:55:18 · 1214 阅读 · 0 评论 -
C++基础知识(this指针)
1、指针永远指向当前对象;2、解决命名上的冲突;3、*this指向对象本体。4、非静态的成员函数才有this指针。#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Person{public: Person(int age) { this->a...原创 2019-05-31 11:10:34 · 228 阅读 · 0 评论 -
C++基础知识(空指针)
空指针访问成员函数 1、如果成员函数没有用到this,那么空指针可以直接访问 2、如果成员函数用的this指针,就要注意,可以加if判断,如果this为空,就return掉。#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Person{pu...原创 2019-05-31 11:27:13 · 1973 阅读 · 0 评论 -
C++基础知识(常函数和常对象)
1、常函数 void func() const {} 常函数2、常函数 修饰是 this指针 const Type * const this3、常函数 不能修饰this指针指向的值4、常对象 在对象前面加上const修饰 const Person p15、常对象不可以调用普通的成员函数,可以调用常函数。6、用multable关键字修饰的成员变量在常函数中可以...原创 2019-05-31 13:36:00 · 1483 阅读 · 0 评论 -
C++基础知识(友元)
friend关键字只出现在声明处 其他类、类成员函数、全局函数都可声明为友元 友元函数不是类的成员,不带this指针 友元函数可访问对象任意成员属性,包括私有属性全局函数做友元函数 全局函数写到 类中做声明 并且前面加上关键字 friend#define _CRT_SECURE_NO_WARNINGS#include<iostream>using ...原创 2019-05-31 21:12:20 · 426 阅读 · 0 评论 -
C++基础知识(深拷贝与浅拷贝)
同一类型的对象之间可以赋值,使得两个对象的成员变量的值相同,两个对象仍然是独立的两个对象,这种情况被称为浅拷贝. 一般情况下,浅拷贝没有任何副作用,但是当类中有指针,并且指针指向动态分配的内存空间,析构函数做了动态内存释放的处理,会导致内存问题。 当类中有指针,并且此指针有动态分配空间,析构函数做了释放处理,往往需要自定义拷贝构造函...原创 2019-05-31 21:51:07 · 204 阅读 · 0 评论 -
C++基础知识(单例模式)
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。Singleton(单例):在单例类的内部实现只生成一个实例,同时它提供一个静态的getInstance()工厂方法,让...原创 2019-05-31 21:57:20 · 336 阅读 · 1 评论 -
C++基础知识(运算符重载一)
运算符重载(operator overloading)只是一种”语法上的方便”,也就是它只是另一种函数调用的方式。运算重载符是多态的一种表现。对于内置数据类型,编译器知道如何做运算。1.加号运算符重载 如果想让自定义数据类型 进行+运算,那么就需要重载 + 运算符 在成员函数 或者 全局函数里 重写一个+运算符的函数 函数名 operator+ () {} 运算符重载 也可以...原创 2019-06-02 16:46:17 · 278 阅读 · 1 评论 -
C++基础知识(运算符重载二)
2.1关系运算符重载自定义数据类型 不会内部做 比较 == != 所以要重载 == !=#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<string>using namespace std;class Person{public: Person(string name, int...原创 2019-06-02 17:44:57 · 138 阅读 · 0 评论 -
C++基础知识(字符串封装)
//MyString.h#pragma once#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class MyString{ friend istream& operator>>(istream& cin, MyString &str); ...原创 2019-06-02 21:27:40 · 304 阅读 · 0 评论 -
C++基础知识(继承)
目录1、继承的引出2、继承方式3、继承中的对象模型4、继承中的构造和析构顺序5、继承中的同名处理6、继承中静态成员的处理7、多继承的概念以及问题8、菱形继承问题以及解决1、继承的引出网页中有很多公共部分 实现时出现许多重复代码 引出继承,基类 (父类) 公共网页 具体子类实现不同的方法(内容) 语法 class 子类 : 继承方式 父类...原创 2019-06-04 17:22:15 · 212 阅读 · 0 评论 -
C++基础知识(多态)
1、静态联编和动态联编多态分类 静态多态:函数重载 动态多态:虚函数 继承关系静态联编:地址早绑定 编译阶段绑定好地址 动态联编:地址晚绑定 运行时候绑定好地址 多态:父类的引用或者指针指向子类对象#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace...原创 2019-06-12 17:39:14 · 234 阅读 · 0 评论 -
C++模板(一)
目录1、函数模板基本使用2、函数模板和普通函数的调用规则3、模板的局限性及解决4、类模板的基本使用5、类模板做函数参数6、类模板碰到继承7、类模板类外实现成员函数1、函数模板基本使用template < class / typename T> 告诉编译器紧跟的代码里出现T不要报错 mySwap( T &a, T &b ...原创 2019-06-13 20:44:50 · 159 阅读 · 0 评论 -
C++模板(二)
目录8、类模板的分文件编写问题以及解决9、类模板碰到友元函数10、类模板的应用——数组封装8、类模板的分文件编写问题以及解决.h .cpp分别写声明和实现 但是由于 类模板的成员函数运行阶段才去创建,导致包含.h头文件,不会创建函数的实现,无法解析外部命令 解决方案 包含 .cpp文件 (不推荐) 不要进行分文件编写,写到同一个文件中,进行声明和实现,后缀名改为....原创 2019-06-14 11:50:22 · 358 阅读 · 0 评论 -
C++类型转换
类型转换(cast)是将一种数据类型转换成另一种数据类型。例如,如果将一个整型值赋给一个浮点类型的变量,编译器会暗地里将其转换成浮点类型。 应该小心类型转换,因为转换也就相当于对编译器说:忘记类型检查,把它看做其他的类型。 一般情况下,尽量少的去使用类型转换,除非用来解决非常特殊的问题。静态转换(static_cast)静态转...原创 2019-06-16 11:19:01 · 190 阅读 · 0 评论 -
C++异常
目录1、异常基本语法2、栈解旋3、异常的接口声明4、异常变量的生命周期5、异常的多态使用6、使用系统标准异常7、编写自己的异常类1、异常基本语法try 试图执行 try{}中的内容 在可能出现异常的地方 抛出异常 throw try下面 catch捕获异常 catch( 捕获类型 ) …代表 所有其他类型 如果不想处理异常,继续向上抛出 th...原创 2019-06-16 11:48:51 · 139 阅读 · 0 评论 -
C++输入流和输出流
1、标准的输入流cin.get 缓冲区中读取一个字符 cin.get(两个参数) 不读换行符 cin.getline () 读取换行 并且扔掉 cin.ignore 忽略 (N) N代表忽略字符数 cin.peek 偷窥 偷看1个字符然后放回去 cin.putback 放回 把字符放回缓冲区#define _CRT_SECURE_NO_WARNINGS#include&l...原创 2019-06-16 22:02:48 · 576 阅读 · 0 评论 -
C++面试题目总结(持续更新......)
Q1:C++的三大特性?封装、继承和多态 注:如果问四大特性,加“抽象”即可。详见:https://blog.csdn.net/weixin_37753215/article/details/81222620Q2:什么是浅拷贝,什么是深拷贝?浅拷贝是系统默认提供的拷贝构造,它一般是简单的值拷贝,如果类中存在指针,并且指针指向动态分配的内存空间,析构函数做了动态内存...原创 2019-06-17 20:33:21 · 170 阅读 · 0 评论 -
C++之STL(一)
目录1、STL概论1.1 STL基本概念1.2 STL六大组件简介1.3STL优点2、STL三大组件2.1 容器2.2 算法2.3 迭代器3、常用容器3.1 string容器3.2 vector容器3.3 deque容器1、STL概论1.1 STL基本概念 STL(Standard Template Library,标...原创 2019-06-21 12:18:26 · 331 阅读 · 0 评论 -
C++之STL(二)
目录3.4 stack容器3.5 queue容器3.6 list容器3.7 set/multiset容器3.8 map/multimap容器 3.4 stack容器 stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了...原创 2019-06-24 10:25:36 · 194 阅读 · 0 评论 -
C++之STL(三)
目录1、函数对象(仿函数)2、谓词3、内建函数对象4、适配器1、函数对象(仿函数) 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor),其实就是重载“()”操作符,使得类对象可以像函数那样调用。注意:1.函数对象(仿函数)是一个类,不是一个函数。 2.函数对象(...原创 2019-06-24 21:44:28 · 162 阅读 · 0 评论 -
C++之STL(四)
目录1、遍历算法2、查找算法3、排序算法4、拷贝和替换算法5、生成算法6、集合算法算法主要是由头文件<algorithm> <functional> <numeric>组成。<algorithm>是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等... <...原创 2019-06-25 22:02:10 · 150 阅读 · 0 评论 -
C++之STL(五)
STL综合案例(学校演讲比赛)比赛规则:某市举行一场演讲比赛( speech_contest ),共有24个人参加。比赛共三轮,前两轮为淘汰赛,第三轮为决赛。 分组比赛,每组6个人;选手每次要随机分组,进行比赛;第一轮分为4个小组,每组6个人。比如编号为: 100-123. 整体进行抽签(draw)后顺序演讲。当小组演讲完后,淘汰组内排名最后的三个选手,然后继续下一个小组...原创 2019-06-26 10:18:41 · 195 阅读 · 0 评论 -
Dev-C++的简单使用步骤
1)打开 Dev-C++,点击File——>New——>Source File2)输写代码3)运行显示结果:原创 2019-08-16 21:57:25 · 2500 阅读 · 1 评论