C++
锥子A
这个作者很懒,什么都没留下…
展开
-
C++---之cin的使用
在学习C++时大家肯定迷惑过关于输入输出各种输出函数的功能,现在来总结一下各种函数的简单用法。 cin建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入,这就是为什么有时会出现...转载 2018-08-30 09:01:38 · 789 阅读 · 0 评论 -
C++--之类成员初始化的概念1
有关const成员、static成员、const static成员的初始化:1、const成员:只能在构造函数后的初始化列表中初始化2、static成员:初始化在类外,且不加static修饰3、const static成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化,也可以像static在类外初始化示例: #include <iostream&...转载 2018-11-23 23:09:36 · 91 阅读 · 0 评论 -
C++---关于静态库,动态库,中间文件的概念
在说明Linux的.a、.so和.o文件关系之前,先来看看windows下obj,lib,dll,exe的关系windows下obj,lib,dll,exe的关系 lib是和dll对应的。lib是静态链接库的库文件,dll是动态链接库的库文件。 所谓静态就是link的时候把里面需要的东西抽取出来安排到你的exe文件中,以后运行你的exe的时候不再需要lib。 所谓动...转载 2019-03-07 22:33:33 · 993 阅读 · 0 评论 -
C++基础----之类型转换,static_cast, dynamic_cast, const_cast, reinterpret_cast,volatile的概念
前言1. c强制转换与c++强制转换c语言强制类型转换主要用于基础的数据类型间的转换,语法为:(type-id)expression//转换格式1type-id(expression)//转换格式2c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,主要运...转载 2019-03-28 10:12:12 · 205 阅读 · 0 评论 -
C++中string、char *、char[]、const char*的转换
1)char*转string:可以直接赋值。2)char[]转string:可以直接赋值。3)char*转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数。4)string转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数5)string转char*:调用string对象的c_s...转载 2019-04-09 11:44:09 · 693 阅读 · 0 评论 -
C++---函数指针
函数指针–成员函数(静态,非静态)&普通函数#include<iostream>using namespace std;class Test{public: //静态成员函数 static void func1(int i) {cout<<++i<<endl;} //非静态成员函数 void func2...转载 2019-05-27 14:29:38 · 63 阅读 · 0 评论 -
linux面试之--堆、栈、自由存储区、全局/静态存储区和常量存储区
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉...转载 2019-06-25 21:38:13 · 185 阅读 · 0 评论 -
C++基础-----rvalue与lvalue的区别
下面是我对这两个单词字面的意思的猜测: lvalue估计来源于left value。 在赋值语句中lvalue = rvalue;位置处于左边。就是可以修改的值。 rvalue估计来源于right value。处于赋值语句右边,是只读的不可修改的值。类似报 const结构 不能被 非const指针指向。 lvalue是可以赋值的,说明它是一...转载 2019-07-10 14:19:04 · 1690 阅读 · 0 评论 -
C++STL基础----------------各个类,函数,宏名查找
NEON函数详解-----vld1_u16、vadd_u16、vst1_u16、vcombine_s32、vget_high_s32、vget_low_s322016年10月26日 17:16:54 谢文浩 阅读数 3075版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiewenhao12/article/details/529362...原创 2019-08-06 09:39:34 · 194 阅读 · 0 评论 -
C++11 Lambda表达式
Lambda表达式匿名函数有函数体,但没有函数名。匿名函数是很多高级语言都支持的概念,如lisp语言在1958年首先采用匿名函数。正因为如此,C++11也同样引入了lambda函数。在C++11中,你可以在源码中内联一个lambda函数,这就使得创建快速的、一次性的函数变得简单了。 相同类似功能我们也可以使用函数对象或者函数指针实现:函数对象能维护状态,但语法开销大,而函数指针语...原创 2019-09-05 15:39:40 · 137 阅读 · 0 评论 -
C++---关于指针释放的概念
一、new创建类对象与不new区别下面是自己总结的一些关于new创建类对象特点:new创建类对象需要指针接收,一处初始化,多处使用 new创建类对象使用完需delete销毁 new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间 new对象指针用途广泛,比如作为函数返回值、函数参数等 频繁调用场合并不适合new,就像new申请和释放内存一样二、new创建类对象实例...转载 2018-11-23 18:45:42 · 2942 阅读 · 0 评论 -
C++---之移位运算
移位运算包含“逻辑移位”(logical shift)和“算术移位”(arithmetic shift)。 逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充。 算术移位:移出去的位丢弃,空缺位(vacant bit)用“符号位”来填充,所以一般用在右移运算中。1、如果是无符号数,不管是左移还是右移都是“逻辑移位” 2、在计算机中,数值...转载 2018-10-23 22:46:44 · 856 阅读 · 0 评论 -
可重入和不可重入
可重入和不可重入也 可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这 样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈,所以不会互相干扰。如果确实需要访问全局 变量(包括static),一定要注意实施互斥手段。可重入函数在并行运行环境中非常重要...转载 2018-10-10 14:31:40 · 130 阅读 · 0 评论 -
C++中const、volatile、mutable的用法
const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。 例如:const int nValue; //nValue是co...转载 2018-09-19 17:23:03 · 81 阅读 · 0 评论 -
C++---之带有virtual的析构函数概念
C++析构函数加上virtual是为了防止内存泄漏。用在C++实现多态的时候,其基类要加virtual。 原因跟动态绑定有关,大家都知道,多态是通过虚函数实现的,而虚函数又是通过动态绑定实现的。先举个例子: class Base { public: virtual void function() { cout<<"...转载 2018-10-11 10:20:43 · 182 阅读 · 0 评论 -
C++---之环境变量的设置
1、getenv() 函数名: getenv功 能: 从环境中取字符串,获取环境变量的值头文件: stdlib.h用 法:char *getenv(char *envvar);函数说明:getenv()用来取得参数envvar环境变量的内容。参数envvar为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为envvar=value。getenv函数的...转载 2018-09-20 21:49:09 · 16459 阅读 · 0 评论 -
C++---之type的用法
C++ typedef用法详解转自http://wenku.baidu.com/view/733ee308581b6bd97f19ead0.html,经过整理typedef的语法描述 在现实生活中,信息的概念可能是长度,数量和面积等。在C语言中,信息被抽象为int、float和 double等基本数据类型。从基本数据类型名称上,不能够看出其所代表的物理属性,并且int、float和...转载 2018-10-11 11:18:08 · 20672 阅读 · 0 评论 -
C++---前置类声明
一、类嵌套的疑问C++头文件重复包含实在是一个令人头痛的问题,假设我们有两个类A和B,分别定义在各自的头文件A.h和B.h中,但是在A中要用到B,B中也要用到A,但是这样的写法当然是错误的: class B;=========================这个就是前置类。class A{ public: B b;};class B{ ...转载 2018-10-18 20:59:47 · 360 阅读 · 0 评论 -
字符串字面值、C风格字符串、C++风格字符串
一、字符串字面值字符串字面值是一串常量字符,字符串字面值常量用双引号括起来的零个或多个字符表示,为兼容C语言,C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符。字符串没有变量名字,自身表示自身"Hello World!" //simple string literal"" //empty string literal"\nCC\toptions\tfile.[cC]\n...转载 2018-10-15 23:44:18 · 162 阅读 · 0 评论 -
C++---之模板概念
c++中模板是什么?为什么要定义模板?一、c++中模板是什么?首先: int Max(int x, int y) { return x > y ? x : y; } float Max(float a,float b) { return a > b ? a : b; }通常我们想要比较不同数据类型的时候不得不定义两种不同的函数来表示区分,...转载 2018-10-09 21:16:35 · 108 阅读 · 0 评论 -
C++---之深拷贝与浅拷贝的区别1
深拷贝与浅拷贝简单的来说,【浅拷贝】是增加了一个指针,指向原来已经存在的内存。而【深拷贝】是增加了一个指针,并新开辟了一块空间让指针指向这块新开辟的空间。【浅拷贝】在多个对象指向一块空间的时候,释放一个空间会导致其他对象所使用的空间也被释放了,再次释放便会出现错误浅拷贝为了形象化说明什么是深拷贝和浅拷贝,我们就先写一个String类类里面包含【构造函数】,【拷贝构造函数】,...转载 2018-10-10 10:36:28 · 101 阅读 · 0 评论 -
C++---之深拷贝与浅拷贝的区别2
前提 在对象拷贝过程中,如果没有自定义拷贝构造函数,系统会提供一个缺省的拷贝构造函数,缺省的拷贝构造函数对于基本类型的成员变量,按字节复制,对于类类型成员变量,调用其相应类型的拷贝构造函数。阅读《高质量的c c++编程》,第9章有这样一段话,类似的话在《c++primer》《effective C++》都有所提及,那就是拷贝构造函数问题,这个是类编写者的一个基础问题。位拷贝(浅...转载 2018-10-10 10:37:29 · 74 阅读 · 0 评论 -
C++----之智能指针
C++11智能指针的深度理解平时习惯使用cocos2d-x的Ref内存模式,回过头来在控制台项目中觉得c++的智能指针有点生疏,于是便重温一下。首先有请c++智能指针们登场:std::auto_ptr、std::unique_ptr、std::shared_ptr 、std::weak_ptr|auto_ptr(不要使用的指针)没有智能指针的c++时代,对堆内存的管理就是简...原创 2019-09-10 14:28:23 · 126 阅读 · 0 评论