category
type
status
date
slug
summary
tags
password
Property
Oct 4, 2024 08:03 AM
icon
1. 命令行参数读取与解析
- 主要函数:getopt(),该函数由Unix标准库提供,包含在<unistd.h>头文件中。 函数定义:
2. 字符串转整数
- 主要函数:atio()【ascii to integer】,包含在<stdlib.h>头文件中
3. 左值(lvalue)、右值(rvalue)及右值引用
- 左值:表示一个占据内存中某个可识别的位置(也就是一个地址)的对象
- 右值:一个表达式不是左值就是右值。那么右值是不表示内存中某个可以识别位置对象的表达式,右值只存在于计算过程中每个临时寄存器中。
不能修改
C++11中引入右值引用
,通过使用右值引用可以减少临时对象的创建,例如如下例子。- 一般引用实现的重载复制运算符:
- 使用
右值引用
实现的重载赋值运算符:
测试代码:
使用一般引用实现的重载赋值运算符的临时创建对象如下:
同样的测试代码的运行结果如下:
4. 数组越界异常捕获
- 提要:在C++中基本数组类型越界时系统是不会报异常的,如下列代码

- vector则会报越界异常
- 直接使用
a[4]
系统会报异常但是try…catch…无法捕获异常,因为std::vector::operator[]不执行边界检查,属于典型的未定义行为(Undefined Behavior),这种情况下try/throw/catch不起作用,程序会崩溃。 而使用上面代码中的std::vector::at,它会执行边界检查,如果越界,会抛出std::out_of_range
异常,所以在访问vector元素时,最好使用.at()
,而不是[]
开发技巧
自定义hash函数
CPP特性
move semantic
one of the main goal: increase performance, since moving an object is faster and
more efficient than deep copying the object
.【移动语义比深拷贝更高效】prerequisite knowledge:
lvalue
,rvalue
A simplified definition oflvalues
is that lvalues are objects that refer to a location in memory. Rvalues are anything that is not a lvalue.
a simple case:


- 作者:axiszql
- 链接:https://axiszql.com/article/cplusplus-development-skill
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。