C++笔记
文章平均质量分 73
杨龙飞的博客
让人迷茫的原因只有一个
__ 那就是本该拼博的年纪,却想得太多,做的太少!
展开
-
C++学习知识点总结(1)
聚合类聚合类使得用户可以直接访问其成员, 并且具有特殊的初始化语法形式,当一个类满足如下条件时,我们说它是聚合的. * 所有成员都是public的. * 没有定义任何构造函数 * 没有类内初始值 * 没有基类,也没有virtual函数. struct Data{ int val; string s;};可以提供一个花括号括起来的成员初始值列表初始化聚合类的数据成员.原创 2015-12-06 17:22:32 · 555 阅读 · 0 评论 -
new和malloc区别
1. 区别new的功能是在堆区新建了一个对象,并返回该对象的指针,所谓的【新建对象】的意思就是,将调用该类的构造函数,因为如果不构造的话,就不能称之为一个对象。malloc只是机械的分配了一块内存,如果用malloc在堆区创建一个对象的话,是不会调用构造函数的,严格来说malloc不能算是新建了一个对象,只能说是分配了一块与该类对象大小相同的内存而已,然后强行把它解释为【这是一个对象】,按这个逻原创 2017-02-10 14:54:00 · 1099 阅读 · 0 评论 -
C++指针和引用的区别
1.指针与引用区别指针是一块内存的地址值,访问变量是间接访问,引用是一块内存的别名,访问变量是直接访问.引用是一个变量的别名,本身不单独分配自己内存空间,而指针有自己的内存空间. 引用使用时无须解引用(*),指针需要解引用.引用只能在定义时被初始化一次,之后不可变;指针可变. 引用不能为空,指针可以为空. “sizeof 引用”得到的是所引用的变量(对象)的大小,而”sizeof 指针原创 2017-02-10 11:58:26 · 1127 阅读 · 0 评论 -
C++对象模型
1.C++对象模型概述 有两个概念可以解释C++对象模型 1.语言中直接支持面向对象程序设计的部分 包括了构造函数、析构函数、多态、虚函数等等. 2.对于各种支持的底层实现机制 对象模型研究的是对象在存储上的空间与时间上的优化,并对C++面向对象技术加以支持,如以虚指针、虚表机制支持多态机制. 2.理解虚函数表2.1多态与虚表C++中虚函数原创 2017-02-05 11:19:48 · 1277 阅读 · 0 评论 -
ubuntu 14.04下安装protobuf2.6.1
1.下载protobuf点击下载protobuf2.6.1解压安装 tar -zxvf protobuf-2.6.1.tar.gzsudo apt-get install build-essentialcd protobuf-2.6.1/./configuremakemake checksudo make install 3.检查是否安装成功protoc –version 安装成功会原创 2016-10-27 16:40:39 · 11268 阅读 · 3 评论 -
C++ 四种类型转换的关键字及其特点
前言C++的四种强制类型转换,所以C++不是类型安全的. 关键字分别是:static_cast,dynamic_cast,const_cast,reinterpret_cast 新类型的强制转换可以提供更好的控制强制转换过程,孕育控制各种不同类的强制转换,C++风格是static_cast(content).C++风格的强制转换其它的好处是,它们能清晰的表明它们要干什么,程序员只要扫一眼这样的原创 2016-09-22 08:19:57 · 2012 阅读 · 1 评论 -
C++ IO库之学习笔记(第八章)
1.基本概念类的基本思想是数据抽象和封装,数据抽象是一种依赖于接口和实现的分离式编程技术,类的接口包括用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需要的各种私有函数. 成员函数申明并定义成员函数成员函数的申明必须在类的内部,它的定义则既可以在类的内部,也可以在类的外部. 定义在类内部的函数是隐式的inline函数. 当我们调用成员函数时,原创 2016-03-13 08:54:18 · 443 阅读 · 0 评论 -
C++11并发API总结
C++11 多线程相关的头文件C++ 新标准中引入了四个头文件来支持多线程编程,他们分别是,,和. :该头文件主要声明了两个类,std::atomic和std::atomic_flag,另外还声明了一套C分格的原子类型和与C兼容的原操作的函数. :该头文件主要声明了std::thread类,另外std::this_thread命名空间也在该头文件中. :该头文件主要申明了与互斥量(mu原创 2016-04-03 21:40:02 · 3011 阅读 · 0 评论 -
二叉排序树的建立、查找和删除
1.二叉排序树的概念:二叉排序树是一种动态树表.二叉排序树的定义:二叉排序树或者是一颗空树,或者是一颗具有如下性质的二叉树:若它的左子树非空,则左子树上的所有的节点的值均小于根节点的值.若它的右子树非空, 则右子树上的所有节点的值均大于根节点的值.左右子树本身又各是一颗二叉排序树,二叉排序树的性质:按中序遍历二叉排序树,得到的中序遍历是一个递增有序序列.原创 2016-03-12 00:13:44 · 1906 阅读 · 0 评论 -
C++fstream读写文件
IO类型间的关系:类型ifstream和istringstream都继承自istream。因此,我们可以像使用istream对象来使用ifstream和istringstream对象,可以对一个ifstream或者istringstream对象调用getline函数,类型ofstream和ostringstream都继承ostream,因此,我们如何使用cout的,就可以同样地使用这些类型原创 2016-03-12 00:11:04 · 3237 阅读 · 0 评论 -
C++string流之istringstream,ostringstream,stringstream类介绍
1.stringstream中clear()和str("")的区别:要想很好的理解和运用string流, 这两者的区别必须搞清楚:区别:clear():清除流的状态标志,(使本不能接受任何数据的流又恢复到能接受数据的状态),但不会清除流中的内容.str(""):清空流中的数据,相当于无论之前流中的数据是什么,使用str("") 之后,流数据为空,并且将状态固定.如果原创 2016-03-12 00:10:15 · 728 阅读 · 0 评论 -
顶层const与底层const
最近复习C++prime第六章,看到书上写的顶层const/底层const那一块的时候,感觉自己又乱了,第一次看时感觉自己看懂了,过了几个月,回过头来看时又看不懂了,结合网上的资料,总结一下;顶层const所谓的顶层const,就是经过const修饰后的变量保持不变:const int m =8; //m的值不再变化int *c原创 2016-03-12 00:09:37 · 945 阅读 · 0 评论 -
c++之浅拷贝和深拷贝
虽然说拷贝构造函数对于基本的C++编程来说,可能不太用得着, 不过这并不说明拷贝构造函数没什么用,它也能为我们解决一些我们常常忽略的问题:假设现在有一个Student类,有一个数据成员是char *name;现在有一个对象Student stu1("yang") ; //数据成员name="yang";再生成一个对象,stu2,把stu1拷贝给stu2,即Student原创 2016-03-12 00:04:36 · 852 阅读 · 0 评论 -
拷贝构造函数的类型为什么必须使用引用类型
有的看着理所当然的东西往往被我们忽略其深层的意义,就像c++ 拷贝构造函数的参数为什么必须是引用类型呢,许多初学者都会说,“为了减少一次内存复制呗!”(其实刚开始我也是这样想的),但究竟是不是这样呢?来,看个小例子(你一定会说:昂....原来是这样啊!);#includeusing namespace std;class myExample{ int mTest;public:原创 2016-03-12 00:05:51 · 3633 阅读 · 1 评论 -
C++11之右值引用
左值和右值的区分 有很多认为在等号左边的就是左值,右边的就是右值,也包括我,看了这篇文章,我想,你一定会明白的,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束后依然存在的持久对象,右值是指表达式结束后就不再存在的临时对象.一个区分左值与右值的便捷方法是:看能不能对表达式取地址,如果能,则为左值,否则为右值. int a = 12; int b = 30; int *原创 2016-03-11 23:56:07 · 567 阅读 · 0 评论 -
c++类---隐式的类型转换
C++的知识点太多了,学过去就忘,所以学点东西,就写篇博客,忘了的时候还可以查查,今天看了C++类的隐式的类型转换,迫不及待的想和大家分享一下,虽然知识点和简单,一看就会,但是我还是选择把它分享出来,由于我也刚开始学c++,有什么说的不对,欢迎大家指出来哦!不说废话了,直接看例子吧,通过例子来谈C++类的隐式类型转换.#include<iostream>#include <string>usi原创 2015-12-06 15:20:02 · 820 阅读 · 0 评论 -
C++ 的四种类型转换
背景C语言中强制类型转换可以随意转换我们想要的类型,格式如下(类型)变量名,那么为什么C++还要引入新的4种类型转换呢? 1.新的类型转换控制符可以很好的控制类型转换的过程,允许控制各种类型不同的转换. 2.C++的类型转换控制服能告诉程序员或读者我们这个转换的目的是什么. static_cast< T * > (content): 静态转换(编译器处理)它主要用于C++中内置的基本数据类型之间原创 2017-02-13 11:34:16 · 1260 阅读 · 0 评论