
C/C++
我的一亩三分地儿
做点事情!
展开
-
C++11 constexpr 关键字用法
constexpr 是 C++11 中增加的关键字,我们可以使用该关键字定义以下对象:编译期常量; 常量表达式函数; 编译期常量对象。以下代码运行环境为:win10 专业版 + vs2019 社区版。1. 编译期常量常量分为编译期常量、运行期常量。编译期常量指的是在编译阶段就可以确定其值,并将其结果展开到使用的地方,不占用内存空间。运行期常量本质上是只读的变量,需要占用内存空间,编译时无法确定其值,运行时,无法修改其值。constexpr 关键字就是用来定义编译期的..原创 2020-12-24 01:27:50 · 1690 阅读 · 1 评论 -
VS2015配置动态库
有时在VS2015中需要一次性配置库的目录,创建新的项目时能够无须再次配置库相关目录. 可进行如下配置:1. 打开 VS 属性管理器2. 配置库头文件所在目录3. 配置附加库目录也就是配置库 lib 文件所在目录.3. 配置DLL 所在目录将 DLL 所在目录配置到 PATH 环境变量中.4. 配置 lib 库名称在我们制作动态库的头文件中,添加如下代码, 相当于每次导入头...原创 2020-01-29 20:31:57 · 2008 阅读 · 0 评论 -
C++基础(八)-尽量以const替换#define
在旧版本C中,如果想建立一个常量,必须使用预处理器”#defineMAX 1024;// const int max = 1024我们定义的宏MAX从未被编译器看到过,因为在预处理阶段,所有的MAX已经被替换为了1024,于是MAX并没有将其加入到符号表中。但我们使用这个常量获得一个编译错误信息时,可能会带来一些困惑,因为这个信息可能会提到1024,但是并没有提到MAX.如果MAX被定义在原创 2017-09-21 01:32:45 · 706 阅读 · 0 评论 -
C++基础(九)-引用
1. 引用概念c++中新增了引用的概念,引用可以作为一个已定义变量的别名。引用是c++对c的重要扩充。在c/c++中指针的作用基本都是一样的,但是c++增加了另外一种给函数传递地址的途径,这就是按引用传递(pass-by-reference),它也存在于其他一些编程语言中,并不是c++的发明。1. 变量名实质上是一段连续内存空间的别名,是一个标号(门牌号)2. 程序中通过变量来申请并原创 2017-09-22 00:31:57 · 271 阅读 · 0 评论 -
C++基础(十二)-函数重载
1. 函数重载概述能使名字方便使用,是任何程序设计语言的一个重要特征!我们现实生活中经常会碰到一些字在不同的场景下具有不同的意思,比如汉语中的多音字“重”。 当我们说: “他好重啊,我都背不动!”我们根据上下文意思,知道“重”在此时此地表示重量的意思。如果我们说“你怎么写了那么多重复的代码? 维护性太差了!”这个地方我们知道,“重”表示重复的意思。同样一个字在不同的场景下具有不同的含义。那原创 2017-09-22 00:58:45 · 326 阅读 · 0 评论 -
C++模板(一)-函数模板
1. 模板概论c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同函数的功能。函数模板具有自动推导,类模板原创 2017-09-22 01:14:48 · 277 阅读 · 0 评论 -
C++模板(二)-类模板
1. 类模板基本概念类模板和函数模板的定义和使用类似,我们已经进行了介绍。有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同。类模板用于实现类所需数据的类型参数化类模板在表示如数组、表、图等数据结构显得特别重要,这些数据结构的表示和算法不受所包含的数据类型的影响。//类模板templateclass Person{public: Person(NameType原创 2017-09-22 01:23:19 · 266 阅读 · 0 评论 -
C++基础(十一)-缺省值和占位参数
1. 函数的默认参数c++在声明函数原型的时可为一个或者多个参数指定默认(缺省)的参数值,当函数调用的时候如果没有指定这个值,编译器会自动用默认值代替。void TestFunc01(int a = 10, int b = 20){ cout << "a + b = " << a + b << endl;}//注意点://1. 形参b设置默认参数值,那么后面位置的形参c也需原创 2017-09-22 00:55:35 · 535 阅读 · 0 评论 -
C++基础(九)-内联函数
1. 内联函数的引出c++从c中继承的一个重要特征就是效率。假如c++的效率明显低于c的效率,那么就会有很大的一批程序员不去使用c++了。在c中我们经常把一些短并且执行频繁的计算写成宏,而不是函数,这样做的理由是为了执行效率,宏可以避免函数调用的开销,这些都由预处理来完成。但是在c++出现之后,使用预处理宏会出现两个问题:1. 第一个在c中也会出现,宏看起来像一个函数调用,但是会有原创 2017-09-22 00:48:28 · 332 阅读 · 0 评论 -
C++基础(七)-const
1. const概述const单词字面意思为常数,不变的。它是c/c++中的一个关键字,是一个限定符,它用来限定一个变量不允许改变,它将一个对象转换成一个常量。const int a = 10;A = 100; //编译错误,const是一个常量,不可修改2. C/C++中const的区别2.1 C中的const 常量的引进是在c++早期版本中,当时标准C规范正在制定。那时,原创 2017-09-21 01:15:03 · 257 阅读 · 0 评论 -
C++基础(六)-三目运算符
c语言三目运算表达式返回值为数据值,为右值,不能赋值。 int a = 10; int b = 20; printf("ret:%d\n", a > b ? a : b); //思考一个问题,(a > b ? a : b) 三目运算表达式返回的是什么? //(a > b ? a : b) = 100; //返回的是右值c++语言三目运算表达式原创 2017-09-21 01:11:25 · 715 阅读 · 0 评论 -
C++基础(五)-struct
c中定义结构体变量需要加上struct关键字,c++不需要。c中的结构体只能定义成员变量,不能定义成员函数。c++即可以定义成员变量,也可以定义成员函数。 //1. 结构体中即可以定义成员变量,也可以定义成员函数struct Student{ string mName; int mAge; void setName(string name){ mName = na原创 2017-09-21 01:09:56 · 674 阅读 · 0 评论 -
C++基础(四)-命名空间
创建名字是程序设计过程中一项最基本的活动,当一个项目很大时,它会不可避免地包含大量名字。c++允许我们对名字的产生和名字的可见性进行控制。我们之前在学习c语言可以通过static关键字来使得名字只得在本编译单元内可见,在c++中我们将通过一种通过命名空间来控制对名字的访问。1. C++命名空间(namespace)在c++中,名称(name)可以是符号常量、变量、函数、结构、枚举、类和原创 2017-09-21 01:04:04 · 349 阅读 · 0 评论 -
C++基础(一)-概述
1.1 c++简介“c++”中的++来自于c语言中的递增运算符++,该运算符将变量加1。c++起初也叫”c withclsss”.通过名称表明,c++是对C的扩展,因此c++是c语言的超集,这意味着任何有效的c程序都是有效的c++程序。c++程序可以使用已有的c程序库。 为什么c++不叫++c呢?因为它虽然对c进行了改进、扩展,但是很多人还是把它当做c来使用。原创 2017-09-21 00:54:25 · 334 阅读 · 0 评论 -
C++基础(二)-hello world
2.1 简单的c++程序2.1.1 c++ hello world请打开一下示例代码:#include//using namespace std; int main(){ cout "hello world" endl; return EXIT_SUCCESS;}分析:n #include;预编译指原创 2017-09-21 00:57:04 · 415 阅读 · 0 评论 -
c语言文件操作函数
1. 按照字符读写文件:fgetc(),fputc()2. 按照行读写文件:fputs(), fgets()3. 按照块读写文件:fread(), fwirte()4. 按照格式化读写文件:fprintf(),fscanf()5. 按照随机位置读写文件:fseek(), ftell(), rewind() 1. 字符读写函数int fputc(int ch, FILE原创 2017-09-25 23:49:17 · 433 阅读 · 0 评论