摘要:一、运算符重载的四项基本原则: ▍不可臆造运算符。 ▍运算符原有操作数的个数、优先级和结合性不能改变。 ▍操作数中至少一个是自定义类型。 ▍保持运算符的自然含义。 二、运算符重载的两种形式: ▍成员函数形式(隐含一个参数 this 指针): 1)双目运算符:参数一个 2)单目运算符:不能显示的声明参
阅读全文
随笔分类 - C++/C
摘要:对于类以及类继承, 几个主要的问题:1) 继承方式: public/protected/private继承.这是c++搞的, 实际上继承方式是一种允许子类控制的思想. 子类通过public继承, 可以把基类真实还原, 而private继承则完全把基类屏蔽掉.这种屏蔽是相对于对象层而言的, 就是说子类
阅读全文
摘要:出处:http://duanple.blog.163.com/blog/static/7097176720111141085197/1. 序 最近在折腾各种.so,碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措。索性化了一天多时间将<<程序员的自我修养—链接、装载与库>>中部分内容略读了
阅读全文
摘要:在dlopen()函数以指定模式打开指定的动态链接库文件,并返回一个句柄给dlsym()的调用进程。使用dlclose()来卸载打开的库。 dlopen: dlopen()The function dlopen() loads the dynamic library file named by th
阅读全文
摘要:文章目录1.jsoncpp2.jsoncpp基础操作2.1 由basic value创建json value2.2 由json value得到basic value2.3 其他一些操作3.序列化与反序列化(Serialization/Deserialization)3.1 json value和st
阅读全文
摘要:Json(JavaScript Object Notation )是一种轻量级的数据交换格式。简而言之,Json组织形式就和python中的字典, C/C++中的map一样,是通过key-value对来组织的,key是任意一个唯一字符串,value可以是bool,int,string 或者嵌套的一个
阅读全文
摘要:JsonCpp 的使用JSON全称为JavaScript ObjectNotation,它是一种轻量级的数据交换格式,易于阅读、编写、解析。jsoncpp是c++解析JSON串常用的解析库之一。 jsoncpp中主要的类: Json::Value:可以表示所有支持的类型,如:int , double
阅读全文
摘要:这些是跨平台编程导致的;一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较: 16位平台 char 1个字节8位short 2个字节16位int 2个字节16位long 4个字节32位指针 2个字节 32位平台 char
阅读全文
摘要:一)64位系统和32位有什么区别? 1、64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存 2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。 什么是64位处理器? 之所以叫
阅读全文
摘要:分几种情况: 1.字符数组 使用strcpy 2.int,float,double等数组 使用memcpy,如复制一个长度为5 的 float数组,则代码示例如下 int len = 5; float a[len] = {1.0 ,1.1, 1.2, 1.3, 1.4}; float b[len];
阅读全文
摘要:1. 已知数据个数 题设让先输入数据个数,再另起一行,每隔一个空格输入一个整数。程序如下: int N;int nArr[100];cin>>N; //如果是C语言,这里就是scanf("%d",&N)for(int i=0;i<N;i++){ cin>>nArr[i]; //每遇到空格读入一个流i
阅读全文
摘要:最近在做题时发现了这样一个问题,有些题目的数据是以单行给出的,比如(2 3 -92 234 275 -7)这样的数列,用cin读取不太方便(cin一般以换行结束一个数据的输入),所以常规做法是将之转化为字符串再行处理,但是在已知数列长度的情况下可以用以下方法读取; 已知长度为N for(i=0;i<
阅读全文
摘要:首先,能用的函数有很多,比如cin.get(), cin.getline(), gets(),getchar(), getline(),但是,经过检验发现都不方便。原因很明显,他们要求的参数不是字符串就是char*,用起来很麻烦。以下是我自己探索到的方法:1.数组法。 int arr[20]; in
阅读全文
摘要:学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1、cin2、cin.get()3、cin.getline()4、getline()5、gets()6、getchar() 附:c
阅读全文
摘要:顺序容器:容器中的元素是有顺序的,按位置存储。 关联容器:按元素的值来存储。 一、顺序容器 不同顺序容器的性能比较: vetcor string 便于随机访问元素,list forward_list 便于增删元素。deque 在两端增删元素较快。每个容器都有一个头文件,还有默认的构造函数。#incl
阅读全文
摘要:一、c++11中的智能指针数组创建 在c++11中引入了智能指针这个概念,这个非常好,但是有一个问题显然被忘记了,如何动态创建智能指针数组,在c++11中没有提供直接的函数。换句话说,创建智能指针的make_shared,不支持创建数组。那在c++11中如何创建一个智能指针数组呢?只能自己封装或者变
阅读全文
摘要:一,内存 静态内存,栈内存,堆内存 ①静态内存 存储局部static对象和类的static对象以及定义在任何函数之外的变量 ②栈内存 栈内存用于保存定义在函数体内非static对象。 ③堆内存 运行需要创建时,才申请的内存空间,只有当程序结束时,才回收,也就是说我们如果不需要这个对象时,我们必须手动
阅读全文
摘要://OK, pointer to int 999 std::shared_ptr<int> sp(new int(999)); template< typename T > struct array_deleter { void operator ()( T const * p) { delete[
阅读全文
摘要:引子智能指针在帮助C++程序员管理动态内存方面可谓神兵利器,但是在有些情况下我们想要对数组进行动态内存管理就会发现一个问题 咦?shared_ptr 在默认情况下是不能指向数组的,那是为什么呢。 原因是因为我们的 shared_ptr 默认的删除器是使用 Delete 对智能指针中的对象进行删除,而
阅读全文
摘要:一、前言写一个用到指针的程序时,被拷贝、赋值、析构函数坑了一波,网上查相关博客,发现关于拷贝、赋值构造函数调用时机大多都有错误,因此决定自己总结撸一发博客。 A (A& a); //拷贝构造函数A (const A& a); //拷贝构造函数A& operator= (const A& a); //
阅读全文