
C++
文章平均质量分 89
羁士
后端开发工程师
展开
-
C++函数之基本介绍
C++程序由一个或多个被称为函数的模块组成。程序从main()函数开始执行,因此该函数必不可少。C++函数分两种:有返回值的和无返回值的。参数是发送给函数的信息,而返回值是从函数中返回去的值,在使用函数之前,C++编译器必须知道函数的参数类型和返回值类型,每个函数都应该有其函数原型。对于C++函数库中的每个函数,都在一个或多个头文件中提供了其原型。有的函数需要多个参数,也有的不需要任何参数原创 2017-04-17 20:15:18 · 560 阅读 · 0 评论 -
C/C++程序编译流程解析(预处理->编译->汇编->链接)
程序的基本流程如图:1. 预处理预处理相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理 ①将所有的“#define”删除,并且展开所有的宏定义转载 2017-07-29 10:47:09 · 477 阅读 · 0 评论 -
Linux Makefile文件编写与使用学习
1.makefile概述 Windows环境下IDE会帮你完成makefile文件的编写,但在UNIX环境下你就必须自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要转载 2017-08-23 20:48:21 · 547 阅读 · 0 评论 -
C/C++中static用法详解及其与const的区别
C 语言的 static 关键字有三种(具体来说是两种)用途:静态局部变量:用于函数体内部修饰变量,这种变量的生存期长于该函数。int foo(){ static int i = 1; // note:1 //int i = 1; // note:2 i += 1; return i; } 要明白这个用法,我们首先要了解原创 2017-08-29 17:09:23 · 1195 阅读 · 1 评论 -
A+B超过long long 大数相加问题
Problem DescriptionI have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B. InputThe first line of the input contains an integer转载 2017-09-07 21:50:19 · 1638 阅读 · 0 评论 -
浅析静态库和动态库的区别
什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。 所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程序的步骤: 静态库之所以成为【静态库】,是因为在链接阶原创 2017-08-30 11:38:01 · 621 阅读 · 0 评论 -
函数重载之函数的默认参数
昨天面试的时候,被问到函数重载时第三个参数为空,只有两个参数会不会调用三个参数的函数,我脱口而出就说不会,回来想想感觉好像不对,然后查了一下资料,发现真的错了例子:int fun(int a,int b,int c=0) fun(5,8)是可以调用上面那个函数的,但如果又存在一个函数int fun(int a,int b)则,fun(5,8)因不知道调用哪个会原创 2017-09-25 14:19:54 · 3208 阅读 · 0 评论 -
QT信号和槽机制的介绍
https://www.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/index.htmlQT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT 库的基础之上。QT 支持下转载 2017-09-18 22:36:49 · 773 阅读 · 0 评论 -
Effective C++ 55个条款概述
视C++为一个语言联邦C++高效编程守则视状况而变化,取决于你使用C++的哪一部分。尽量以const,enums,inline替换#define对于单纯常量,最好以const对象或enums替换#defines;对于形似函数的宏(macros),最好改用inline函数替换#defines。尽可能使用const将某些东西声明为const可帮助转载 2017-09-21 11:28:50 · 445 阅读 · 0 评论 -
C++ STL之字符串容器string用法详解
C++STL提供了string基本字符系列容器来处理字符串,可以把string理解为字符串类,他提供了添加删除,替换,查找和比较等丰富的方法; 虽然使用vector 这样的向量也可以处理字符串,但功能比不上string。向量的元素类型可以是string,如vector这样的向量,实际上就类似于C语言中的字符串数组; 使用string容器,需要包含头文件声明#incl转载 2017-08-07 22:37:00 · 4443 阅读 · 0 评论 -
C++中const,define和static的区别
C++中不但可以用define定义常量还可以用const定义常量,它们的区别如下:#define MAX 255用#define定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在程序中使用到该常量的地方都要进行拷贝替换;Const float MAX =255; 用const定义原创 2017-05-09 16:54:11 · 1587 阅读 · 0 评论 -
C++函数之函数与数组
首先来看一下什么是数组?数组(array)是一种数据格式,能够存储多个类型的值。要创建数组,可使用声明语句。语句声明应支出以下三点:l 存储在每个元素中的值的类型l 数组名l 数组中元素个数通用格式: typeNamearrayName [arraySize]表达式arraysize指定元素数目,它必须是整形常数或const值,也可以是常量表达式,但不可以是变量。原创 2017-04-18 22:52:45 · 987 阅读 · 0 评论 -
C++函数之类的构造函数与析构函数
构造函数C++的目标之一是让使用类对象就像使用标准类型一样方便。而类的构造函数专门用于构造新对象、将值赋给它们的数据成员。更准确的说,C++为这些成员函数提供了名称和使用方法,而程序员需要提供方法定义。构造函数的原型和函数头虽然没有返回值但也没有声明void类型,其实构造函数是没有声明类型的。构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建对象时, 对象会自动调用它的原创 2017-05-01 15:06:56 · 450 阅读 · 0 评论 -
C++函数之类的虚函数和纯虚函数区别与详解
C++面向对象语言的一大特性就是抽象,在程序设计上的体现就是鼓励面向接口编程,而不要面向具体实现编程。这里所说的抽象和接口与C++的多态性密切相关。C++的多态分为静态多态(编译时多态)和动态多态(运行时多态)两大类。静态多态通过重载、模板来实现;动态多态就是通过本文的主角虚函数来体现的。虚函数是C++语言一个非常重要的特性,不同编译器对此特性的实现机制也略有差别,虚函数在某些情况下对程序的占用内原创 2017-05-03 20:57:12 · 513 阅读 · 0 评论 -
C++虚函数之虚函数表浅析
C++ “虚函数”的存在是为了实现面向对象中的“多态”,即父类类别的指针(或者引用)指向其子类的实例,然后通过父类的指针(或者引用)调用实际子类的成员函数。通过动态赋值,实现调用不同的子类的成员函数(动态绑定)。正是因为这种机制,把析构函数声明为“虚函数”可以防止在内存泄露。 为了支持虚函数机制,编译器为每一个拥有虚函数的类的实例创建了一个虚函数表(virtual table),这个表中原创 2017-05-05 16:28:57 · 364 阅读 · 0 评论 -
C++数组替代品之vector&array用法浅析
1、模板类vector1.1 基本定义及操作vector是一种动态数组,可在运行阶段设置vector对象的长度,可在末尾附加数据也可在中间插入数据,它使用new和delete来管理内存。首先,要使用vector对象,必须包含头文件vector。其次,vector包含在名称空间std中,可使用using编译指令、using声明或std::vector第三,模板使用不同的语法来指出原创 2017-05-24 21:14:02 · 1091 阅读 · 0 评论 -
C++内存管理详解
By ShinChan Published Sep 25 2014Contents1. 内存分配方式1.1. 简介1.2. 明确区分堆与栈1.3. 堆和栈究竟有什么区别2. 控制C++的内存分配2.1. 重载全局的new和delete操作符2.2. 为单个的类重载new[]和delete[]3. 常见的内存错误及其对策4. 针与数组的转载 2017-05-25 20:58:45 · 222 阅读 · 0 评论 -
C++函数之函数模板浅析
函数模板是通用的函数描述,也就是说他们使用泛型来定义函数,其中泛型可以用具体的类型代替。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。由于模板允许以泛型的方式编写程序,因此也被称为通用编程。注意:模板定义本身不参与编译,而是编译器根据模板的用户使用模板时提供的类型参数生成代码,再进行编译,这一过程被称为模板实例化。用户提供不同的类型参数,就会实例化出不同的代码。1、原创 2017-05-07 18:14:57 · 315 阅读 · 0 评论 -
Java和C++区别
文章作者:未知 文章来源:水木森林1.指针 java语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说java没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于java程序的安全。 2.多重继承 c++支持多重继承,这是c++转载 2017-05-08 22:12:13 · 227 阅读 · 0 评论 -
C++设计模式简介
设计模式为开发人员提供一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特征:封装、继承、多态等。常见的设计模式主要有:工厂模式、策略模式、适配器模式、单例模式、原型模式、模板方法模式、建造者模式、外观模式、组合模式、代理模式、享元模式、桥接模式、修饰模式、备忘录模式、中介者模式、职责链模式、观察者模式、状态模式。设计模式依据目的可分为三种类型:创建型、转载 2017-09-21 11:30:24 · 697 阅读 · 0 评论