C++
文章平均质量分 58
Real_JumpChen
这个作者很懒,什么都没留下…
展开
-
引用,指针,常量引用,常量指针,指针常量的区别
1.指针:指针代表一个变量的地址; 例如: int a =2,b = 1,*pi = &a; pi= &b; 2.引用:引用即针对一个变量的别名,引用必须被初始化,引用作为参数(形参)时,不会像指针一样使用存储单元,更不会像值传递一样创建该参数的副本,提高空间/时间效率。 例如:int a=2,&b = a; 3.常量引用:格式为 const 变量类型 &a...原创 2017-09-05 21:45:27 · 1550 阅读 · 7 评论 -
拷贝构造函数和拷贝赋值函数
【转载】https://www.cnblogs.com/yuanfy/p/3899658.html拷贝构造函数和拷贝赋值函数的区别拷贝构造函数是针对一个未存在的对象进行初始化;拷贝赋值函数是针对已存在的对象进行初始化。A a; A b = a; //拷贝构造 A c; b = c; //拷贝赋值 怎么避免一个对象给另一个对象赋值?自定义拷贝构造函数和拷...转载 2018-03-12 23:40:01 · 2558 阅读 · 1 评论 -
C/C++基本数据类型占用字节数
内容会持续更新,有错误的地方欢迎指正,谢谢!基本数据类型占用的字节数32位编译器:char :1个字节 char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节) short int : 2个字节 int: 4个字节 unsigned int : 4个字节 float: 4个字节 double: 8个字节 long...原创 2018-02-26 23:42:36 · 2576 阅读 · 0 评论 -
多态为何物
内容会持续更新,有错误的地方欢迎指正,谢谢!多态是什么?有什么作用?同一种事物所表现出的多种形态,简单地说是“一个接口多种实现”。有两种类型的多态性:编译时的多态性:编译时的多态性是通过函数重载或运算符重载来实现的。运行时的多态性:运行时的多态性是通过虚函数与基类指针共同作用实现的。作用:静态多态的作用:减少了名字(比如:函数名)的数量,避免了名字空间的污染,对...原创 2018-03-12 09:53:10 · 407 阅读 · 0 评论 -
**(p+1)和*(*p+1)的区别
内容会持续更新,有错误的地方欢迎指正,谢谢!例1:下面程序的输出结果是:#include<iosteam.h>void main(){ int n[][3] = {10,20,30,40,50,60}; int (*p)[3]; p=n; cout<<p[0][0]<<","<<*(p[0]+1)<...原创 2018-03-17 22:20:35 · 20445 阅读 · 0 评论 -
编写string类的构造、拷贝构造、析构、拷贝赋值函数
内容会持续更新,有错误的地方欢迎指正,谢谢!#include<iostream> using namespace std; class String { public: String(const char *str=NULL); //构造函数 String(const String &other); //拷贝构造函原创 2018-03-14 12:06:38 · 452 阅读 · 0 评论 -
C++中cin、cin.get()、cin.getline()、getline()的用法
内容会持续更新,有错误的地方欢迎指正,谢谢!1.cin>>遇“空格”、“TAB”、“回车”都结束char a[20]; cin>>a; cout<<a<<endl; 输入:jkljkl jkljkl //遇空格结束 输出:jkljkl2.cin.get()用法一:从指定的输入流中读取一个字符,返回值就是这个字符。读取到文件结束符就返回EOF,一般以-1代表EOF。//用于舍弃输入原创 2018-04-01 09:51:30 · 1616 阅读 · 0 评论 -
C++中的explicit
内容会持续更新,有错误的地方欢迎指正,谢谢!前言: explicit 关键字在平时的实践中确实很少用,但MFC库、C++标准库的相关类声明中explicit出现的频率是很高的,了解explicit的功能及其使用 对我们阅读和使用库是很有帮助的。重点: explicit关键字能用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显式的方式进行类型转换;e...原创 2018-04-01 21:33:58 · 350 阅读 · 0 评论 -
C#和C++字符串拼接的性能分析
内容会持续更新,有错误的地方欢迎指正,谢谢!字符串操作是编程中非常频繁的操作,下面是字符串拼接效率的提升方法:C#中字符串的拼接1.字符串和整数进行拼接时,应减少装箱string是引用类型,值类型与引用类型之间的转换存在装箱与拆箱操作;将值类型转换成引用类型的操作叫装箱,将引用类型转换成值类型叫拆箱。 字符串和整数进行拼接操作时,并不默认调用ToString()方法,存在...原创 2018-04-01 14:00:43 · 1863 阅读 · 1 评论 -
神奇的sizeof
内容会持续更新,有错误的地方欢迎指正,谢谢!char* c = "HelloWorld";char ca[11] = "HelloWorld";cout << sizeof(c) << endl;//4cout << sizeof(ca) << endl;//11testArray是一个包含8个元素的int类型数组,sizeo...原创 2018-04-05 00:32:53 · 386 阅读 · 0 评论 -
内存字节对齐、为什么要对齐
内容会持续更新,有错误的地方欢迎指正,谢谢!内存字节对齐对齐的三个原则如何内存对齐?sizeof的结果怎么来的?请记住以下3条原则:(在没有#pragma pack宏的情况下)原则1:结构(struct)或联合(union)的数据成员,存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如:假设一个数据成员为int,i...原创 2018-04-14 01:02:08 · 2032 阅读 · 0 评论 -
C#和C++有什么区别
内容会持续更新,有错误的地方欢迎指正,谢谢!突然想到,自己在用的C#和C++有什么区别?有点懵,对不对,但静下来想想,从非语言层面来看,C++的确有很多不同点:C++是面向对象的C语言,还多了STL这个标准模板库;C++针对系统底层,非常适用于开发操作系统层面的应用;C++缺乏现成的框架模板可以使用,开发难易程度大;C++需要自己管理内存、操作系统、任务调度、资源管理,很多都得自己来;但是原创 2018-03-10 16:01:55 · 2208 阅读 · 0 评论 -
C++编程题常用容器汇总
内容会持续更新,有错误的地方欢迎指正,谢谢!STL的容器分为顺序容器和关联容器。容器适配器是对这两类容器进行包装得到的有更强约束力的容器。容器适配器stackstack是一种容器适配器,常被用于先进后出、逆序输出的情景。stack没有迭代器,将特定的容器作为其底层,如deque,list,vector…empty() //堆栈为空则返回真 pop() //移除栈顶...原创 2018-01-28 09:41:43 · 775 阅读 · 0 评论 -
malloc/free和new/delete的区别
内容会持续更新,有错误的地方欢迎指正,谢谢!异同相同点:都可用于申请动态内存并释放内存。不同点:1.本质不同malloc与free是C++/C 语言的标准库函数,而new/delete 是C++的运算符。对于非内部数据类型(内部数据类型:不需要用户自己定义,如int,char,float等;非内部数据类型:需要用户自己定义,如struct,enum,unio...原创 2017-12-13 12:01:51 · 411 阅读 · 0 评论 -
iterator和const iterator 和 const_iterator的区别
众所周知,iterator就是一个灵活的迭代器,而const iterator 和 const_iterator是啥?接下来,我来讲讲:const iterator(const迭代器)const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的。比如说我们这样定义一个const迭代器。vector<int> vec(10,9); const vector<int> ::原创 2017-10-16 19:55:13 · 785 阅读 · 0 评论 -
memset()、memcpy()、strcpy()的用法
内容会持续更新,有错误的地方欢迎指正,谢谢!memset()用法定义:void *memset(void *s,int c,size_t n) 作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。 void是一个通用类型,使用的时候可以用int、char等等。 注意:memset()是针对字节来处理的,所以需要特别注意size_t n的正确性。memset() 函数常用于内存空间初始化原创 2017-12-11 21:01:13 · 586 阅读 · 0 评论 -
++i和i++的区别(C++)
内容会持续更新,有错误的地方欢迎指正,谢谢!区别:i++ 与 ++i 的主要区别有两个:i++ 返回原来的值,++i 返回加1后的值。i++ 不能作为左值,而++i 可以。第一点不用解释了,说下第二点。 首先解释下什么是左值?左值(可被寻址的值)是对应内存中有确定存储地址的值,而右值是所有不是左值的表达式的值。一般来说,左值是可以放到赋值符号左边的变量。但能否被...原创 2017-12-24 04:16:38 · 1610 阅读 · 0 评论 -
Boost库和STL介绍
转自:http://blog.csdn.net/feitianxuxue/article/details/7237749 Boost库: Boost库是C++第三方库中的一种。作为标准库的后备,其中有些内容有望成为下一代C++标准库内容,是不折不扣的“准”标准库,大部分Boost库功能的使用只需包括相应头文件即可,少数需要链接库。但Boost中也有很多是实验性质的东西,在实际的开发中使用需要...转载 2017-12-15 17:14:25 · 2661 阅读 · 0 评论 -
C++编程题最常用函数汇总
内容会持续更新,有错误的地方欢迎指正,谢谢!1.string转int的方式采用标准库中atoi函数。string str = "55"; int temp = std::atoi(str.c_str()); 2.int转string的方式采用标准库中的to_string函数,不需引入头文件,直接用就好。to_string函数还定义了任何其他内置类型转为string的重载函数,很实用。int tem原创 2018-01-10 02:24:50 · 3715 阅读 · 0 评论 -
C++中的“虚”
本博文整理的知识点是C++中有关虚的一切,包括:虚函数,纯虚函数,纯虚类(抽象类),虚基类,虚析构函数、虚基类、虚继承、虚函数表…1.什么是虚函数,有什么作用?前言先理解多态:http://blog.csdn.net/BillCYJ/article/details/79523110,磨刀不误砍柴功。若派生类内定义了一个与基类同名的成员函数(假设是非虚函数的成员函数),该现象称为...原创 2018-01-07 22:52:15 · 1691 阅读 · 1 评论 -
map和unordered_map的差别和使用
笔记会持续更新,有错误的地方欢迎指正,谢谢!map和unordered_map的差别还不知道或者搞不清unordered_map和map是什么的,请见: http://blog.csdn.net/billcyj/article/details/78065438需要引入的头文件不同map: #include &amp;lt; map &amp;gt; unordered_map: #include &amp;lt; unordered_m原创 2018-01-05 23:03:30 · 58693 阅读 · 19 评论 -
C++编程常用头文件及其包含函数汇总
【转自】http://blog.csdn.net/linhaiyun_ytdx/article/details/48064065#include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。当使用<iostream.h>时,相当于在C中调用库函数,使用的是全局命名空间,也就是早期的C++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须转载 2017-12-31 16:00:57 · 3639 阅读 · 0 评论 -
结构体和类的区别(C/C++/C#)
内容会持续更新,有错误的地方欢迎指正,谢谢!C的struct与C++的class的区别:struct与class有着非常明显的区别。C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,不能定义成员函数,并且不能用于面向对象编程。C++中的struct和class的区别:struct有构造函数和成员函数、继承、虚函数等特性,因此,C...原创 2017-12-26 02:00:30 · 749 阅读 · 0 评论 -
const char *a与char const *a与char * const a的区别
内容会持续更新,有错误的地方欢迎指正,谢谢!题目说出以下四个语句的区别: const char *a char * const a char const *a const char * const aconst和指针的基础知识:指向常量的指针(C++Primer上叫 指向常量的指针)(底层const):自觉不去(靠它自己也不能)改变所指对象,而该对象若不是常量对象则其值...原创 2017-12-23 14:38:36 · 3972 阅读 · 1 评论 -
STL源码剖析 之 vector
内容会持续更新,有错误的地方欢迎指正,谢谢!vector容器概述: vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变;要换个大(或小)一点的房子,可以,一切琐细都得由客户端自己来:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的空间释还给系统。vector是动态空间,随着元素的加入,它原创 2017-12-14 13:54:58 · 485 阅读 · 2 评论 -
用C语言实现strcpy函数和strncpy函数
内容会持续更新,有错误的地方欢迎指正,谢谢!strcpy是C语言中的一个复制字符串的库函数,手动实现如下:char* strcpy(char* des,const char* sourse){ if(des==NULL||sourse==NULL) return NULL; char* res=des; while((*des++=*sourse++)!='原创 2018-03-12 17:01:36 · 2224 阅读 · 0 评论