类型转换:主要进行指针类型转换,因为在C++中,不同类型指针不允许隐式转换,任何一个程序中如果出现了大量的类型转换,说明该程序不是太好的程序. 注意事项: 不同类型指针不允许隐式转换: void* 类型指针不允许直接赋值给其他类型指针,需要进行强制类型转换: 其他类型指针可以赋值给 void* 类型变量:…
内联函数以及函数参数 内联函数 使用 inline 关键字必须和函数体放在一起. 内联函数具有内部链接属性. 内联函数会被编译器在编译阶段替换到函数调用的地方. 可以把内联函数定义写到头文件中,多个cpp包含时不会引起重定义. 如果出现连接错误: 使用第三方库,没有将其库代码配置到项目,所以导致编译器找不到实现(变量定义,函数定义) 本身自己只写了声明,根本没有定义实现. 变量本身.函数本身具有内部链接属性,此函数或者变量只能在当前文件访问. 函数参数 函数参数的作用 兼容C语言中不规范的语法…
1.C语言动态内存管理的缺点: 1.malloc对象的大小需要自己计算. 2.需要手动转换指针类型. 3.C++的对象不适合使用malloc和free. 2.C++中new/delete基本使用: 3.其他类型.指针类型动态开辟空间   4.动态数组创建及释放 5.注意事项 1.new必须和delete共用,不能用new/free也不能用malloc/delete,不能混用. 2.如果创建的是动态数组,那么必须使用delete[]来释放动态数组. 3.New/Delete工作原理: 如果New创…
枚举类型 C++中对枚举的加强: 1.C++不允许非枚举值赋值给枚举类型,不允许其他枚举类型的值赋值给当前枚举类型,而C语言中是允许的. 2.枚举值具有外层作用域,容易造成名字冲突. 3.不同类型的枚举值可以直接比较. 代码实现: C++中的强枚举类型: 1.强枚举类型不具有外层作用域. 2.C++强枚举不允许其他类型的值赋值给当前枚举变量. 3.C++强枚举类型不允许不同类型枚举值之间的比较. 代码实现:…
引用 引用的好处: 1.引用的好处 C++使用结构体,不需要再使用 typedef. 2.值传递是将实参进行拷贝,赋值给形参,如果对象比较大,每次拷贝效率比较低,并且函数内部无法修改外部变量的值,能力较弱.若使用地址传递无论数据大小,每次只需要传递指针大小的数据,传递效率较高,函数具有修改外部变量的能力(const 指针).而引用即可以有值传递简洁的语法,又可以兼顾指针传递的效率. 3.如果要使用常量引用,编译器会给常量分配内存,并且让新创建的对象引用该内存. 4.引用的机制: 引用是通过指针来…
 Const Const在C语言和C++语言中连接属性不一样,C语言默认是外部连接,如果需要内部连接,需要显示写上static.而在C++中默认是内部连接,如果希望其编程外部变量,需要显示写上extern. 在内存角度C语言中的const是一个只读变量,会分配内存.而在C++中的const有两种情况,第一种情况是全局变量取地址.extern,此时会分配内存,否则不分配内存,使用的时候直接替换到调用的地方:第二种情况是局部变量默认进行常量优化,例如 const int a = 10; 会将10直接…
NAMESPACE语法 namespace主要解决了命名冲突的问题,语法如下 Namespace注意事项: namespace中可以定义常量.变量.函数.结构体.枚举.类等. namespace 只能在全局定义. namespace 支持嵌套定义,如下图所示: 4.namespace是开放的,可以随时添加新成员. 5.namespace 关键字可以为已有空间名字增加别名,例如 6.无名命名空间意味着命名空间中的符号只能在本文件中访问,相当于给符号增加了 static 修饰,该命名空间中的变量只能…
函数重载 1.函数重载语法 1.同一个作用域(全局作用域.命名空间作用域.类作用域) 2.参数个数不同 3.参数类型不同 4.参数顺序不同 代码实现: 当函数名字一样的时候,通过参数类型.参数个数.参数顺序来匹配函数调用. 函数发生调用,首先编译器会进行严格类型匹配  . 编译器对参数进行隐式类型转换,转换成功,则可进行函数调用. 2.函数的返回值不能作为重载条件 3.函数重载碰到默认参数 当重载的函数具有默认值的时候,避免二义性.…
1.匿名函数基础语法.调用.保存 1.auto lambda类型 2.函数指针来保存注意点:[]只能为空,不能写东西 3.std::function来保存 2.匿名函数捕捉外部变量(值方式.引用方式) 1.[]表示捕获外部变量,如果在匿名函数内部想要使用外部定义的变量,必须要捕获,捕获有两种方式,一中是引用捕获,一种是值捕获 2.引用捕获:& 表示以引用的方式捕获所有外部变量 [&a, &b] 表示捕获指定变量 3.值的方式捕获:默认以值方式捕获的变量具有connst性,[=]号按…
For循环以及AUTO类型 For代码实现: AUTO类型: 1.auto自动类型推导,省事. 2.auto主要在模板中用的多,模板的类型比较长,使用auto可以简化代码. 3.不要轻易使用,我们在编写代码的时候,需要清楚的知道数据的类型. 代码实现: auto推导数据类型:(打印typeid().name可以显示具体数据类型的名字) auto创建变量并赋值: auto推导数组: 使用auto进行for循环: 注意事项: 1.auto不能定义数组: 2.auto不能作为函数参数,但是可以作为函数…
作用域运算符用来告诉编译器在哪个作用域范围搜索符号,一般分为以下3种: 全局作用域: 命名空间作用域: 类作用域:…
1.c语言中的多态,动态绑定和静态绑定 void do_speak(void(*speak)()) { speak(); } void pig_speak() { cout << "猪叫..." << endl; } void cat_speak() { cout << "猫叫..." << endl; } void test01() { do_speak(cat_speak); } C++中的多态: class An…
面向对象(封装) 1.对封装的理解: 1.封装就是把变量和函数放在一起统一表示某一个食物. class 2.给类内部的成员增加访问控制权限. 3.封装的语法就是class定义一个类. 2.给对象成员增加访问控制权限public和private: 1.类的内部没有权限之分,类内的成员函数可以访问私有成员变量,类的外部才有权限. 2.如果只是提供类内部的函数使用的变量和函数,建议定义为private私有属性. 3.如果我们写的成员函数需要外部调用,我们可以将其定义为共有属性public. 3.str…
在C++语言中新增了四个关键字static_cast.const_cast.reinterpret_cast和dynamic_cast.这四个关键字都是用于强制类型转换的.我们逐一来介绍这四个关键字. ) static_cast: 在C++语言中static_cast用于内置基本数据类型型的强制转换,强制将一种数据类型转换为另一种数据类型.例如将整型数据转换为浮点型数据. [例1]C语言所采用的类型转换方式: ; ; double result = (double)a / (double)b;…
一.字符串中单引号和双引号的使用: 1.字符串以英文单引号' '引用.eg:'Hello World' 2.若字符串中含有单引号,则以英文双引号" "引用.eg:"I'm LiMing" 3.若字符串中含有双引号,则以英文单引号' '引用.eg:'I love "python".' 4.若字符串中同时含有单引号和双引号,则以三对英文双引号""" """引用.eg:""…
以一个挂接在APB2上的外设函数使能为例 A : RCC_APB2PeriphClockCmd():时钟使能函数 1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); B : RCC_APB2Periph_AFIO是什么呢? 1 #define RCC_APB2Periph_AFIO  ((uint32_t)0x00000001) RCC_APB2Periph_AFIO就是代表十六进制 1 C: 知道RCC_APB2Periph_AFIO是什…
今日内容要求: 1. 了解关键字的概念及特点,了解保留字 2. 熟练掌握标识符的含义,特点,可使用字符及注意事项 3. 了解常量的概念,进制,进制之间相互转换,了解有符号标识法的运算方式 4. 掌握变量的概念及定义过程 5. 掌握java 中的数据类型及注意事项 6. 掌握强制类型转换的格式 1. 关键字 概念:被java语言赋予特定含义的单词 特点:所有的字母都是小写的,在一些高级开发工具中,会有特殊颜色的显示 保留字:目前版本中还不是关键字,但是有可能在后续的版本中升级为关键字,如 goto…
在C语言中,强制类型转换的方式为(Type)Expression,另外还有一种现在已经不用的旧式写法Type(Expression),这两种方式是等价的. 但是,C语言的强制类型转换方式存在一些问题: 过于粗暴,可以在任意类型之间进行转换,编译器很难判断其正确性 难于定位,在源代码中无法快速定位所有使用强制类型转换的语句 然而,强制类型转换在实际工程中几乎是不可避免的,为此C++将强制类型转换分为4种不同的类型,以提供更加安全可靠的转换. 强制类型转换 说 明 static_cast 用于基本类…
关于ExtJS对javascript中的Array的扩展.能够參考其帮助文档,文档下载地址:http://download.csdn.net/detail/z1137730824/7748893 因为Array中的方法过多.将当中的部分方法设计实例进行学习.实例地址:http://blog.csdn.net/z1137730824/article/details/38797257 (1)Ext.Array中的方法 clean( Array array ) : Array 过滤掉数组里的空值,空值…
今天来学习的扩展是和日志相关的一个扩展,对于 PHP 的日志应用来说,除了本身自带的 error_log() . syslog() 之外,在大多数的框架中还会经常见到 monolog 的踪影.当然,我们今天讲的并不是 monolog ,而是需要自己安装的一个扩展日志组件. 关于 SeasLog 首先要说明的是,SeasLog 这个扩展是我们国人开发的哦,Neeke 大佬.并且这个扩展也是收录在官方文档中的,下面是他的知乎主页的链接,大家可以去多多向大佬学习. 架构师 Neeke:https://…
对于各类开发语言来说,整数都有一个最大的位数,如果超过位数就无法显示或者操作了.其实,这也是一种精度越界之后产生的精度丢失问题.在我们的 PHP 代码中,最大的整数非常大,我们可以通过 PHP_INT_MAX 来查看.不过,当整数超过一定的位数之后,就会使用科学计数法来显示了,这个可不是我们想要的结果.别着急,GMP 扩展就是专门用来应对这种情况的. GMP 扩展是随 PHP 源码包一起发布的,在安装扩展之前需要系统环境中先安装 gmp-devel ,在 CentOS 中直接 yun insta…
为什么说这个 Calendar 扩展很好玩呢?因为你基本用不到它!这个扩展是一套关于日期历法的扩展,但是对于我们来说,它没有农历的相关操作,所以对于我们中国人来说这个扩展并没有什么实际的作用.不过这并不妨碍我们去了解学习它. 日期历法类型 对于正常情况下的日期操作来说,PHP 默认使用的是 UTC 时间,也就是国际标准时间,对于我们国家来说,需要在标准 UTC 的时间上加 8 来表示北京时间东八区.当然,也可以直接修改 php.ini 或者数据库中的时区相关参数来定义好日期时区. 标准时区对应的…
在之前的文章中,我们就已经接触过 MYSQLI_result 相关的内容.它的作用其实就是一个查询的结果集.不过在 PDO 中,一般直接通过 query() 或者 PDOStatement 对象进行查询之后就会返回结果.但在 MySQLi 中,会把查询到的结果也放入一个对象中,这就是 MySQLI_result 对象. MySQLI_result 对象属性 首先,我们要通过一段查询来获得一个 MySQLI_result 对象. $stmt = $mysqli->prepare("selec…
就像 PDO 中的 PDO_Statment 对象一样,MySQLI_STMT 对象也是一个预处理语句所形成的对象,专门用来操作 MySQLi 所生成的预处理语句的.其实操作方式之类也都比较相似,不外乎以绑定参数为主的一些针对 SQL 语句和获取结果集的操作. 参数绑定及操作属性 之前的文章中想必大家已经见过我们使用的 bind_param() 方法,它与 PDO 中的 bindParam() 方法有很大的不同. $stmt = $mysqli->prepare("insert into…
对于 MySQLi 来说,事务和预处理语句当然是它之所以能够淘汰 MySQL(原始) 扩展的资本.我们之前也已经学习过了 PDO 中关于事务和预处理语句相关的内容.所以在这里,我们就不再多讲理论方面的东西了,直接上代码来看看 MySQLi 中这两大特性与 PDO 在使用上的区别. 事务处理 首先,我们还是要让 MySQLi 对于错误的语句也报出异常来.关于这个功能就和 PDO 很不一样了.在 PDO 中,我们直接指定连接的报错属性就可以了.而在 MySQLi 中,我们则需要指定 MySQLi_D…
我们继续 MySQLi 扩展的学习,上篇文章中提到过,MySQLi 的扩展相对于 PDO 来说功能更加的丰富,所以我们依然还会在学习过程中穿插各种 MySQLi 中好玩的方法函数.不过,今天的主角是 MySQLi 中如何执行 SQL 语句以及多条 SQL 语句的执行. 连接与选择数据库 首先是一个小内容的学习分享,依然还是连接数据库,不过这次我们用另外一种方式来进行连接. $mysqli = new mysqli(); $mysqli->real_connect("localhost&qu…
虽说是少见的一些属性方法,但是可能还是有不少同学在日常的开发中使用过,这里只是学习了可能相对来说我们用得比较少的一些 mysqli 的属性或方法.就当是扩展一下自己的知识体系. 切换用户 首先就是切换一下当前连接数据库的用户. // 切换用户 $mysqli->change_user('root2', "123", 'blog_test'); // 错误信息 $res = $mysqli->query( "SELECT * FROM zyblog_test_use…
关于 PDO 的学习我们告一段落,从这篇文章开始,我们继续学习另外一个 MySQL 扩展,也就是除了 PDO 之外的最核心的 MySQLi 扩展.可以说它的祖先,也就是 MySQL(原始) 扩展是我们很多人刚开始学习 PHP 时连接数据库的入门导师.不过随着时代的变迁,MySQL(原始) 扩展在 PHP7 中已经被彻底废弃了.现在如果想要使用过程式的代码来操作数据库,只能使用 mysqli 扩展了.当然,mysqli 扩展也是支持面向对象式的写法的. 什么是 MySQLi MySQLi 扩展允许…
关于ExtJS对javascript中的String的扩展,能够參考其帮助文档,文档下载地址:http://download.csdn.net/detail/z1137730824/7748893 以下对当中的部分方法进行介绍: (1)capitalize capitalize( String string ) : String 返回一个字符串.该字符串中第一个字母为大写字母 Parameters string : String 要转换的字符串 Returns String 转换后的字符串 (2…
关于ExtJS对javascript中的Number的扩展,能够參考其帮助文档,文档下载地址:http://download.csdn.net/detail/z1137730824/7748893 以下对当中的部分方法进行介绍: (1)constrain constrain( Number number, Number min, Number max ) : Number 检查给定的数值是否在约束的范围内. If the number is already within the 假设再范围内就返…