《C++高级编程》中的收获
来源:互联网 发布:无线端来源我的淘宝 编辑:程序博客网 时间:2024/06/06 04:40
由于考研的需要,前些天在学校的图书馆里借了一本《C++高级编程》。看的过程中感觉自己以前好多没有学过或者没有注意的地方。下面是我看的过程中的一些收获。
1、切勿在头文件中使用using指令或using声明,否则每个人都会包含你的头文件。
2、数组来自于C,但仍能在C++中使用。但C++中有一种大小固定的特殊容器std::array,这个容器在<array>头文件中定义。好处:1)总是知道自身的大小 2)不会自动转换为指针从而避免了某些类型的bug 3)具有迭代器,可以方便的遍历元素。3、与C不同,在C++中没有形参的函数仅需要一个空的圆括号,不需要使用void指出没有形参。然而,如果没有返回值,仍需要使用void来指明这一点。
4、类型推断有两个关键词:auto和decltype。
5、关键字auto:1)第一种函数是告诉编译器,在编译时自动推断变量的类型。2)第二种用法是用于替代函数语法。3)第三种是用于函数返回类型的推断。4)第四种用途是用于通用的lambda表达式。
6、关键词decltype把表达式作为实参,计算出该表达式的类型。
7、在堆栈上分配内存的变量不需要由程序员释放内存(删除),这个过程是自动完成的。
8、在任何时候都应该避免使用未初始化的变量,尤其是未初始化的指针,因为它们会指向内存中的每个随意位置。使用这种指针很可能使程序崩溃。这就是应显示同时申明和初始化指针的原因。如果不希望立即分配内存,可以把它们初始化为空指针nullptr。int* myIntegerPoint=nullptr;。使用new操作符分配内存:myIntegerPointer=new int; 在此情况下,指针箭头的方向寻找堆中实际的值。为了给堆中新分配的整数赋值,可用如下代码:*myIntegerPointer=8;
需要注意的是,这并非myIntegerPointer的值设置为8,在此并没有改变指针,而是改变了指针所指的内存。如果真需要重新设置指针的值,那么它将指向内存地址8,这可能是一个随机的无用单元,最终会程序会导致程序崩溃。
使用完动态分配的内存后,需要使用delete操作符释放内存。为防止释放指针指向的内存后在使用指针,建议把指针设置为nullptr。
delete myIntegerPointer; myIntegerPointer=nullptr;
警告:在解除引用之前指针必须有效,对null或未初始化的指针解除引用会导致程序崩溃。
- 《C++高级编程》中的收获
- stm32 编程的收获,有关C语言(在stm32 公交报站中的收获)
- C# WinForm编程中的一点小收获
- 今天多线程编程练习中的一些收获
- C# WinForm编程中的一点小收获
- JAVA高级视频_网络编程_收获一
- JAVA高级视频_网络编程_收获二
- C高级编程
- C# WinForm编程中的一点小收获(二)
- 读《微软C编程精粹》的一些收获
- LINUX 下的 mysql + c 编程 学习收获
- 《C专家编程》1-2章阅读收获
- 《C专家编程》3-4章阅读收获
- 《C专家编程》5-6章阅读收获
- 《C专家编程》7-8章阅读收获
- C高级编程笔记一
- C高级编程笔记二
- C高级网络编程小结
- 数据结构与算法Java版——栈与队
- 在vue项目中引入高德地图及其UI组件
- java中"=="和equals方法比较
- java虚拟机 Class类文件的结构
- 进程间通信 之 消息队列(Linux)
- 《C++高级编程》中的收获
- 状态模式
- Java基本数据类型和String相互转换
- Hadoop日记——分布式文件系统HDFS
- 项目实训第五周1
- hibernate对象的三种状态
- 再谈 GCD
- jQuery
- android studio jni 移植一个VS上开发的项目 使用了opencv