
C/C++
文章平均质量分 72
Tanswer_
纸上得来终觉浅,绝知此事要躬行!
展开
-
预处理器、编译器、汇编、链接
预处理器(cpp)C/C++的预处理器是最低端的一种—–词法预处理器,主要是进行文本替换、宏展开、删除注释、把头文件内容包含进来这类简单工作。gcc -E选项可得到预处理后的结果,预处理结果会显示到屏幕上,如果需要保存,则得需要重定向,扩展名为 .i;C/C++预处理不做任何语法检查,不仅是因为它不具备语法检查功能,也因为预处理命令不属于C/C++语句(这也是定义宏时不要加分号的原因),语法检查原创 2017-04-30 12:28:46 · 1866 阅读 · 12 评论 -
【C++】类和对象二
static静态成员变量+静态成员函数 定义成员函数 this const成员函数 类作用域原创 2016-09-29 00:18:56 · 748 阅读 · 0 评论 -
【C++】类与对象
类的声明 前向声明 嵌套类 局部类原创 2016-09-21 00:54:31 · 688 阅读 · 0 评论 -
【C++】面向对象程序设计
面向对象程序设计 对象 面向对象的特征 封装 继承 多态原创 2016-09-18 15:50:17 · 1587 阅读 · 0 评论 -
【C++】入门基础概念
指针和引用 C++类型 重载 内联函数 new delete 新式类型转换原创 2016-09-17 23:22:00 · 976 阅读 · 0 评论 -
【C++】jsoncpp的安装与使用
一、JSON的简单介绍 JSON(JavaScript Object Notation):JS对象表示法 是轻量级的文本数据交换格式;独立于语言,JSON解析器和库支持多种编程语言 json文件的文件类型是”.json”语法规则:数据在 名称/值对 中 名称在双引号中,后面写一个冒号,然后是值 值可以是:数字(整数或者浮点数)、string(在双引号中)、逻辑值(tr原创 2017-06-12 19:49:44 · 8611 阅读 · 3 评论 -
[C++11]左值、右值、左值引用、右值引用小结
左值和右值左值:指表达式结束后依然存在的持久对象,可以取地址,具名变量或对象 右值:表达式结束后就不再存在的临时对象,不可以取地址,没有名字。 比如 int a = b + c;,a 就是一个左值,可以对a取地址,而b+c 就是一个右值,对表达式b+c 取地址会报错。C++11中右值又由两个概念组成:将亡值和纯右值。纯右值和将亡值在C++98中,右值是纯右值,纯右值指的是临时变量值、不跟对象关联原创 2017-08-09 21:37:30 · 2688 阅读 · 0 评论 -
[C++11]半同步半异步线程池实现与分析
线程池介绍服务器完成一项任务的时间可分为:T1:创建线程或进程时间;T2:执行任务时间;T3:销毁进程或线程时间。通常T1+T3的时间大于T2,线程池正是关注如何缩短T1和T3的时间。 线程池通过在系统中预先创建一定数量的线程,当任务请求到来时从线程池中分一个预先创建的线程去处理任务,线程在处理完任务后还可以重用,不会销毁,继续等待下次任务的到开。这样能避免大量的线程创建和销毁操作,从而节省系统资原创 2017-08-11 16:03:45 · 1719 阅读 · 0 评论 -
C++智能指针的分析与使用
手动管理的弊端在简单的程序中,我们不大可能忘记释放 new 出来的指针,但是随着程序规模的增大,我们忘了 delete 的概率也随之增大。在 C++ 中 new 出来的指针,赋值意味着引用的传递,当赋值运算符同时展现出“值拷贝”和“引用传递”两种截然不同的语义时,就很容易导致“内存泄漏”。手动管理内存带来的更严重的问题是,内存究竟要由谁来分配和释放呢?指针的赋值将同一对象的引用散播到程序各原创 2018-01-11 23:39:30 · 3449 阅读 · 3 评论 -
复合&继承关系下的构造和析构
继承关系下的构造和析构看一下测试代码:/* * @filename: Inheritance.cpp * @author: Tanswer * @date: 2018年01月31日 14:59:28 * @description: 测试继承关系下的构造和析构 */#includeusing namespace std;class Base原创 2018-01-31 16:25:55 · 814 阅读 · 1 评论 -
【C++】构造函数&&析构函数
构造函数每个类都分别定义了自己的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这样的函数叫做构造函数。构造函数(Constructor)是一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户调用(用户也不能调用),而是在创建对象时自动执行。作用:初始化对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。 类可以包含多个构造函数,不同构造函数之间必须原创 2016-10-06 16:48:02 · 1553 阅读 · 0 评论 -
【C++】继承语法&&继承方式
何为继承?继承是类与类之间的关系,与现实世界的继承类似。被继承的类称为父类或基类,继承的类称为子类或派生类。例如类B继承于类A,那么B拥有A的成员变量和成员函数。 派生类除了拥有基类的成员还可以定义自己的新成员。使用继承的场景:1.要创建的新类与已有的类类似,只是多出几个成员变量或者成员函数 2.当要创建多个类,它们拥有很多类似的成员变量或者成员函数时,可以把这些类共同的成员提取出来,定义一个基原创 2016-10-07 17:03:38 · 3785 阅读 · 0 评论 -
C++操作Mysql数据库/Linux下
想用C++写项目,数据库是必须的,所以这两天学了一下C++操作Mysql数据库的方法。也没有什么教程,就是在网上搜的知识,下面汇总一下。 连接MySQL数据库有两种方法:第一种是使用ADO连接,不过这种只适合Windows平台;第二种是使用MySQL自己的C API函数连接数据库。我是在Linux平台下开发,所以就采用第二种方法,有很多Api函数,但是常用的就几个,我也是就用到其中的几个。API函原创 2017-05-28 23:28:44 · 3447 阅读 · 4 评论 -
【C++】智能指针的设计与实现
普通指针 C、C++没有自动内存回收机制,程序员需要手动释放,如果忘记则会导致内存泄露,另外普通指针存在悬垂指针的问题。何为悬垂指针? 当有多个指针指向同一个对象时,如果某个指针delete了该对象,对这个指针来说它是明确了它所指的对象被释放了,所以它不会再对此对象进行操作,但是对于剩下的其他指针来说呢?它们还傻傻地指向已经被删除的对象,并随时准备对它进行操作,于是悬垂指针就形成了。/*****原创 2016-10-10 22:46:29 · 1823 阅读 · 0 评论 -
【C++】尽可能使用const
请记住: 1. 将某些东西声明为const可帮助编译器侦测出错误用法。const 可被施加于任何作用域内的对象、函数参数、函数返回类型、成员函数本体。 2. 编译器强制实施bitwise constness,但编写程序时应该使用“概念上的常量性”。 3. 当 const 和 non-const 成员函数有着实质等价的实现时,令non-const 版本调用 const 版本可避免代码重复。原创 2017-04-30 18:04:51 · 1419 阅读 · 1 评论 -
【C++】尽量以const,enum,inline 替换 #define
尽量以const,enum,inline 替换 #define原创 2017-04-29 16:23:27 · 1615 阅读 · 3 评论 -
【C++】顺序容器
一个容器就是一些特定类型对象的集合。顺序容器为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。顺序容器的概述下表列出了标准库中的顺序容器,所有顺序容器都提供了快速顺序访问元素的能力。但是不同容器在一下方面都有不同程度的性能折中。向容器添加或删除元素的代价非顺序访问容器元素的代价 顺序容器类型 vector ------ 可变大小数组。支持原创 2016-11-08 23:44:21 · 2695 阅读 · 0 评论 -
【C++】IO库
C++不直接处理输入输出,而是通过一族定义在标准库中的类型来处理IO。这些类型支持从设备读取数据、向设备写入数据的IO操作,设备可以是文件、控制台窗口等。还有一些类型允许内存IO,即从string读取数据,向string写入数据。原创 2016-10-28 21:15:59 · 1434 阅读 · 0 评论 -
【C++】运算符重载总结
运算符重载的概念和语法重载,就是赋予新的含义,运算符重载和函数重载类似,同一个运算符可以有不同的功能。运算符重载的方式就是定义一个函数,在函数体内实现想要的功能,当用到该运算符时,编译器就会自动调用这个函数。也就是说,运算符重载就是通过函数定义实现的,它本质上是函数重载。返回值类型 operator 运算符名称(形参列表){ //TODO; }operator是关键字,原创 2016-10-20 14:40:11 · 3098 阅读 · 2 评论 -
【C++】继承时的名字遮蔽&&派生类的构造函数
如果派生类和基类中的成员相同,会发生什么情况呢? 如果派生类和基类的成员变量或者成员函数相同,那么就会遮蔽从基类继承来的成员函数或者成员变量,即使用新增的成员变量,而不是使用继承来的。/************************************************************************* > File Name: 继承_名字遮蔽.cpp原创 2016-10-08 15:28:43 · 1349 阅读 · 0 评论 -
make 出现 OOM???
心情烦躁,随便翻翻博客,好久没更新了,来写篇水博,冷静一下。这周编译一个项目的时候,出现 error,如下:看到 cc1plus 被 killed 了,第一反应是不是因为 OOM killed 掉了,本来云服务器就只有 1G 内存。用 dmesg 看一下吧,果然:那怎么办,使用 swap 吧,需要开启一下,默认是关闭的。使用交换文件来做交换分区。// 先创建交换文件falloca...原创 2019-04-25 14:13:09 · 612 阅读 · 0 评论