网站首页 > 基础教程 正文
1.类型与变量相关
1.1 nullptr
c++11引入了nullptr关键字 专门用来区分空指针和0
在某种意义上来说,传统c++会把NULL和0视为同一种东西,这取决于编译器如何定义NULL,有些编译器会将NULL
定义为((void*)0) 有些则会直接将其定义为0。
c++不允许直接将void*隐式转换到其他类型,但如果NULL被定义为((void*)0) 那么当编译char* ch=NULL时,
NULL只好被定义为0。
1.2 auto
auto并没有让c++成为弱类型语言,也没有弱化变量什么,只是使用auto的时候,编译器根据上下文情况,确定auto
变量的真正类型,auto作为函数返回值时,只能用于定义函数,不能用于声明函数
auto AddTest(int a,int b)
{
return a + b;
}
int main()
{
auto index = 10;
auto str = "abc";
auto ret = AddTest(1, 2);
std::cout<<"index" << index <<std::endl;
std::cout<<"str"<<str<<std::endl;
std::cout<<"ret"<<ret<<std::endl;
}
1.3 constexpr
近似const 可以修饰变量 也可以修饰函数
修饰变量如:
const int global = 100;
int main()
{
int temp = 100;
constexpr int a = 1; //right
constexpr int b = global; //right
constexpr int c = temp; //wrong
}
即可以赋值字面常量也可以赋值以const变量
重点:constexpr修饰的函数 生效于编译时而不是运行时 重点应用于修饰函数使其在编译期大幅度被解释
被constexpr 修饰的函数 无论是普通函数 还是类成员函数,必须是编译器可计算得到结果,即字面常量 不可是
运行时才能获取的内容
1.4、using取代typedef
typedef double db; //c99
using db = double; //c++11
typedef void(*function)(int, int);//c99,函数指针类型定义
using function = void(*)(int, int);//c++11,函数指针类型定义
using kvpairs = std::map<std::string, std::string>; //c++11
using CompareOperator = std::function<int (kvpairs &, kvpairs &)>; //c++11
using query_record = std::tuple<time_t, std::string>; //c++11
template<class T> using twins = std::pair<T, T>; //更广泛的还可以用于模板
for循环语法
习惯C#或java的同事之前使用C++的时候曾吐槽C++ for循环没有像C#那样foreach的用法,是的,在C++11之前,标准C++是无法做到的。熟悉boost库读者可能知道boost里面有foreach的宏定义BOOST_FOREACH,但个人觉得看起并不是那么美观。
int main()
{
int numbers[] = {1,2,3,4};
std::cout<<"numbers" <<std::endl;
for (auto v : numbers)
{
std::cout<< v << std::endl;
}
}
猜你喜欢
- 2024-10-19 Python3 datetime模块指南:日期时间操作、时区管理与实战案例
- 2024-10-19 C++及数据结构复习笔记,类和对象很简单?为啥好多程序员还不会
- 2024-10-19 Linux时间和日期 linux 时间 表示方法
- 2024-10-19 C/C++的8种时间度量方式以及代码片段
- 2024-10-19 Python实战:使用 datetime模块处理时间日期的全方位指南
- 2024-10-19 C++编程的 42 条建议(四) c++编程100例
- 2024-10-19 mount with noatime - 合理关闭atime提高服务器性能
- 2024-10-19 linux下连续三次fork()——深度理解进程创建函数
- 2024-10-19 C函数time和clock的计时区别 c计时器函数
- 2024-10-19 win进程弹出Microsoft Visual C++ Runtime Library的解决办法
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)