C++
文章平均质量分 53
one_soft_stone
这个作者很懒,什么都没留下…
展开
-
数据封装与数据抽象
所有的 C++ 程序都有以下两个基本要素:程序语句(代码):这是程序中执行动作的部分,它们被称为函数。 程序数据:数据是程序的信息,会受到程序函数的影响。封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即数据隐藏。数据封装是一种把数据和操作数据的函数捆绑在一起的机制。...转载 2018-11-15 16:54:12 · 467 阅读 · 0 评论 -
C++ 接口(抽象类)
接口描述了类的行为和功能,而不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示: class Box{ public: // 纯虚函数 vir...转载 2018-11-15 17:07:57 · 68 阅读 · 0 评论 -
编译过程
连接:https://www.cnblogs.com/xcywt/p/4902789.html 我们知道,一个程序由源代码到可执行文件往往由这几步构成:预处理(Prepressing)-> 编译(Compilation)-> 汇编(Assembly)-> 链接(Linking)。 编译过程就是把预处理完的文件进行一系列词法分析、语法分析、语义分析及优化后生产相...转载 2018-11-14 14:11:20 · 191 阅读 · 0 评论 -
C++ 模版 Template
转自:http://www.360doc.com/content/09/0403/17/799_3011262.shtml1. 模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。...转载 2018-11-15 11:27:15 · 147 阅读 · 0 评论 -
vector
在c++中,vector是一个十分有用的容器。存在方式类似于数组,与list在删除、插入方面有较大差别。作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。 List是stl实现的双向链表,与向量(vect...转载 2018-11-17 22:23:52 · 77 阅读 · 0 评论 -
迭代器 iterator
迭代器是一种检查容器内元素并遍历元素的数据类型。C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只用少数容器(如vector)支持下标操作访问容器元素。作用类似指针 一.定义和初始化 每种容器都定义了自己的迭代器类型,如vector:vector<int>::iterator iter;...转载 2018-11-17 22:36:24 · 102 阅读 · 0 评论 -
c++ list
list是一个线性双向链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块(即实际存储的数据)、一个前驱指针和一个后驱指针。它无需分配指定的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中,并且由指针将有序的元素链接起来。由于其结构的原因,list 随机检索的性能非常的不好,因为它不像vector 那样直接找到元素的地址,而是要从头一个一个的顺序查找,这样目标元...翻译 2018-11-17 22:43:45 · 113 阅读 · 0 评论 -
map
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们...转载 2018-11-17 22:47:42 · 110 阅读 · 0 评论 -
S下使用QDebug
https://blog.csdn.net/ussr561/article/details/60335275 #include <QDebug>...qDebug() << "Brush:" << myQBrush << "Other value:" << i;VS进入 Project Propert转载 2019-01-08 21:42:00 · 143 阅读 · 0 评论 -
namespace 命名空间
命名空间 std是一个类(输入输出标准),它包括了cin成员和cout成员,“using name space std ;”以后才能使用它的成员。#include<iostream.h>中不存在类std,但是他有cin,out的相关函数,不需要使用命名空间了。而第二种标准#include<iostream>,它包含了一个类,在类的使用之前要预处理一下,“using...转载 2019-02-13 10:58:02 · 207 阅读 · 0 评论 -
C++多态
1. 定义:“一个接口,多种方法”,程序在运行时才决定调用的函数。2. 实现:C++多态性主要是通过虚函数实现的,虚函数允许子类重写override(注意和overload的区别,overload是重载,是允许同名函数的表现,这些函数参数列表/类型不同)。 *多态与非多态的实质区别就是函数地址是早绑定还是晚绑定。 *如果函数的调用,在编译器编译期间就可以确定函数的调用地址,并生产...转载 2018-11-08 22:42:31 · 169 阅读 · 0 评论 -
友元函数 友元类 friend
C++提供诸多便捷方式,但各有优劣需谨慎使用。友元提供了不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。c++中的友元为封装隐藏这堵不透明的墙开了一个小孔,外界可以通过这个小孔窥视内部的秘密。友元的正确使用能提高程序的运行效率,但同时也破坏了类的封装性和数据的隐藏性,导致程序可维护性变差...转载 2018-11-05 16:39:25 · 201 阅读 · 0 评论 -
C++ 引用 int&
引用链接:https://www.cnblogs.com/duwenxing/p/7421100.html目的 用途1.在引用的使用中,单纯给某个变量去别名是毫无意义的,引用的目的主要用于在函数参数的传递中,解决大块数据或对象的传递效率和空间不如意的问题2.用引用传递函数的参数,能保证参数在传递的过程中不产生副本,从而提高传递效率,同时通过const的使用,还可以保证参数在传递过程中的...转载 2018-10-29 22:05:23 · 3722 阅读 · 0 评论 -
内联函数 inline 与宏定义 #define
内联函数目的引入内联函数的目的是为了解决程序中函数调用的"效率问题"。特别是对于一些函数体代码不是很大,但又频繁地被调用的函数来讲,解决其效率问题更为重要。函数调用会带来降低效率的问题,因为调用函数实际上将程序执行顺序转移到函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去前要保护现场并记忆执行的地址,转回后先要恢复现场,并按原来...原创 2018-10-29 23:05:46 · 259 阅读 · 0 评论 -
构造函数
类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作 构造函数的作用:初始化对象的数据成员。构造函数的种类class Complex { private : double m_real; double m_imag;public: // 无参数构造函数 ...原创 2018-10-31 22:21:35 · 81 阅读 · 0 评论 -
C++ string库
转自 https://blog.csdn.net/Duke10/article/details/78344226/使用场合:string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行操作,也可以通过文件等手段进行操作。同时C++的算法库对string也有着很好的支持,而且string还和c语言的字符串之间有着良好的接口。声明和初始化方法:想使用s...转载 2018-10-31 22:45:14 · 2092 阅读 · 0 评论 -
const 常量
/*const是一个常量关键字,主要是为了防止所修饰对象被修改。const是constant的简写,只要一个变量前面用const来修饰,就意味着该变量里的数据可以被访问,不能被修改。也就是说const意味着“只读”readonly规则:const离谁近,谁就不能被修改;const修饰一个变量,一定要给这个变量初始化值,若不初始化,后面就无法初始化。本质:const在谁后面谁就不可...转载 2018-10-30 17:22:06 · 687 阅读 · 0 评论 -
tstatic静态变量与const常量区别总结
C++中对于数据的保护是定义不同的访问权限,减少被不要的修改的几率***数据成员*** 常为私有成员,**函数成员** 常为公有成员***静态变量*** static 为了节省空间,实现数据的共享,保证数据的一致性。***常量成员*** const 为了保证无法修改有些数据需要被共享,但是也不能被修改,用此定义为常量(类似于#define)只能在初始化的时候进行赋值操作,不能在类...原创 2018-10-30 17:29:17 · 577 阅读 · 0 评论 -
C++ 函数重载
C++ 允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,这就是函数的重载在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如希望交换两个变量的值,这两个变量有多种类型,可以是 int、float、char、bool 等,我们需要通过参数把变量的地址传入函数内部。在C语言中,程序员往往需要分别设计出三个不同名的函数,其函数原型与下面类似:void swap1(...转载 2018-10-30 21:51:53 · 173 阅读 · 0 评论 -
C++ 运算符重载 operator
您可以重定义或重载大部分 C++ 内置的运算符。这样,您就能使用自定义类型的运算符。重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。Box operator+(const Box&);声明加法运算符用于把两个 Box 对象相加,返回最终的 Box 对象。大多数的...转载 2018-11-06 13:59:02 · 296 阅读 · 0 评论 -
++( 自增运算符) 与 --( 自减运算符)
前缀形式的++操作符出现在操作数的前面。 例如: ++a; 说明: 操作数的值被相加,而表达式的值就是操作数增加后的值。 举例: int a, b = 1; a = ++b; //b增加至2,a得到的值为2 后缀形式的++操作符出现在操作数的后面。 例如: a++; ...转载 2018-11-06 14:29:35 · 1454 阅读 · 0 评论 -
继承 public protect private
1:不管是哪种继承方式, 在派生类内部都可以访问基类的公有成员和保护成员 , 基类的私有成员存在但是在子类中不可见( 不能访问) 。 2:使用关键字class时默认的继承方式是private, 使用struct时默认的继承方式是public, 不过最好显式的写出继承方式。.3:在实际运用中一般使用都是public继承, 极少场景下才会使用protetced/private继承。 ...转载 2018-11-06 21:27:10 · 1659 阅读 · 0 评论 -
new/delete和malloc/free
参考:https://www.cnblogs.com/maluning/p/7944231.html 每个程序在执行时都会占用一块可用的内存空间,用于存放动态分配的对象,此内存空间称为自由存储区或堆。 一.new和delete用法 如下几行代码:int *pi=new int;int *pi=new int();int *pi=new int(1024); ...转载 2018-11-04 22:17:06 · 94 阅读 · 0 评论 -
c++ 拷贝构造函数 CExample(const CExample & c)
一、什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=100;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。 下面看一个类对象拷贝的简单例子。#include<iostream>using namespace std;class CExample{pr...转载 2018-11-05 16:39:40 · 545 阅读 · 0 评论 -
各类型的数据操作 char string int long float等
char 与 int之间的转换 https://blog.csdn.net/smilesundream/article/details/77881995cout 输出stringhttps://www.cnblogs.com/mzct123/p/4876185.htmlC++字符串操作 https://www.cnblogs.com/lidabo/p/348704...原创 2019-03-13 15:50:05 · 289 阅读 · 0 评论