func()等价于func(void)

也就是说在C++中,参数列表为空意味着不接受任何参数。之所以要注意这一点是因为在C语言中,参数列表为空意味着参数不确定。两者的语义是有巨大差别的,作为学了C再学C++的人来说,是需要注意的一点。

void指针无法隐式转换为其它类型指针

需要通过static_cast<T*>语法来显式转换,同样也是跟C中的语法不一致,C语言中是允许void指针直接赋值给其它类型指针的。一个最好的体现两者区别的例子就是C和C++中对NULL宏定义的不同:

#undef NULL
#ifdef __cplusplus
// C++
#define NULL 0
#else
// C
#define NULL ((void *)0)
#endif

char不一定等于signed char

实际上,C++标准中没有规定char类型的符号,依赖于具体的实现,这一点和其它的整型类型都不同。所以要使用char类型来进行小整数运算的时候最好明确指定其符号。

const全局变量默认作用域为当前cpp文件

为了能在头文件中定义const全局变量,C++规定const全局变量默认具有内部链接属性,若要将其作用域扩大到全工程,那么需要在定义处手动加上extern关键字:

// 这两行全局变量定义等价
const int MAX = 233;
static cosnt int MAX = 233;

创建struct union enum对象时不必带上这几个关键字

在C语言中是需要带上相应的关键字的,在C++中这几种类型和class类型一样,只需要写类型名即可:

struct Foo {
int count;
}; // ok
Foo foo;

忽略参数的处理

有时候不需要处理函数调用传进来的一些参数,但如果放置没有用的参数不管可能会引起编译警告甚至错误,这个时候就需要手动指定忽略参数的处理:

// 方法一
void func(int n, int m) {
// 忽略参数m
(void)m; std::cout << n << std::endl;
} // 方法二
void func(int n, int) {
std::cout << n << std::endl;
}

最新文章

  1. CSS缩放函数, 旋转函数与倾斜函数
  2. echarts地图点定位的问题
  3. JVM中锁优化简介
  4. python实现PKCS5Padding
  5. USM锐化之openCV实现,附赠调整对比度函数
  6. H5手机开发锁定表头和首列(惯性滚动)解决方案
  7. 翻译:MariaDB wait/nowait
  8. Ubuntu安装JDK与环境变量配置
  9. 6. spring启动类配置问题
  10. (ScrollViewer或者有滚动条的控件)嵌套一个(ScrollViewer或者有滚动条的控件)禁用里面的滚动条
  11. vscode 常用插件
  12. 搭建SpringBoot+dubbo+zookeeper+maven框架(二)
  13. 从html页面中抽取table表格数据
  14. ASP.NET实现从服务器下载文件问题处理
  15. 蓝鲸DevOps深度解析系列(1):蓝盾平台总览
  16. int(a) 和 (int &) a 及 数据存储地址的探究
  17. c# 关于async/await异步编程的浅析和使用
  18. LeetCode 11. [&#128065;] Container With Most Water &amp; two pointers
  19. 微信小程序之 动画 —— 自定义底部弹出层
  20. PHP开启curl_init

热门文章

  1. PHP的七个数组指针函数
  2. Oracle数据库之表与表数据操作
  3. jmeter压测以及用Badboy录脚本
  4. Swift入门
  5. [剑指Offer]56-数组中数字出现的次数(位运算)
  6. JAVA基础知识之面向对象编程知识汇总
  7. openstack核心组件——glance— 镜像服务(6)
  8. ribbon源码(3) 配置模块
  9. 10月1日之后,你新建的GitHub库默认分支不叫「master」了
  10. python的全局函数