C++

一. 开发环境环境

  1. 基本环境设置
    gcc -v 查看编译器版本
    http://www.runoob.com/cplusplus/cpp-environment-setup.html
  2. CMake 编译器/链接器
    https://blog.csdn.net/xierhacker/article/details/79445339
    cpplint ?
  3. 基于VSCode
    https://code.visualstudio.com/docs/languages/cpp
    【C/C++】extension. This is an official Microsoft extension.
    【CMake】extension.
    【CMake Tools】extension. This enables usage of a set of CMake commands from inside VS Code.
    【Native Debug】.

C++ libraries ?

.vscode
.cmaketools.json # CMake: Build
.c_cpp_properties.json # C/Cpp: Edit Configurations
.launch.json # Debug: Open launch.json 【C++ (GDB/LLDB)】

https://lain.run/tutorials/Boost-and-Visual-Studio-Code/
https://medium.com/audelabs/c-development-using-visual-studio-code-cmake-and-lldb-d0f13d38c563

  1. 基于VIM?

二、基础

  • 基础语法(指针/引用是重点)
    动态内存分配/释放
  • Google C++ Style Guide
  • 基础类库STL
    leveldb源代码中使用std的统计
std::x count
std::string 729
std::vector 101
std::set 15
std::string::npos 9
std::numeric_limits 7
std::make_pair 7
std::move 7
std::map 5
std::memory_order_relaxed 5
std::pair 4
std::atomic 4
std::min 4
std::sort 3
std::FILE 3
std::mutex 2
std::string::size_type 2
std::fwrite 2
std::strerror 2
std::memcpy 2
std::thread 2
std::aligned_storage 2
std::deque 2
std::memory_order::memory_order_relaxed 2
std::abort 2
std::fflush 1
std::condition_variable 1
std::fclose 1
std::memset 1
std::stringstream 1
std::upper_bound 1
std::unique_lock 1
std::memory_order_seq_cst 1
std::forward 1
std::queue 1
std::this_thread::get_id 1
std::time_t 1
std::string::reverse_iterator 1
std::vsnprintf 1
std::snprintf 1
std::rename 1
std::getenv 1
std::atomic_thread_fence 1
std::fopen 1
std::tm 1
std::memory_order_release 1
std::va_list 1
std::ostringstream 1
std::max 1
std::adopt_lock 1
std::memory_order_acquire 1
std::swap 1
  • Boost类库
    https://futucocoa.github.io/2017-01-06-macOSBoostInstallGuide/
    brew install boost
    /usr/local/Cellar/boost/1.67.0_1
    boost::lexical_cast 2
    boost::split 1
    boost::shared_ptr 1
    boost::is_any_of 1
    boost::static_pointer_cast 1
    boost::random::mt 1
    boost::random::discrete_distribution 1
  • Google Protocol Buffers
    https://developers.google.com/protocol-buffers/
    https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.html
    which protobuf
    conda install protobuf
    protoc --version
    cmake+pb

三、应用
https://github.com/fffaraz/awesome-cpp

  • 日志库
  • 配置文件?
  • 读写redis
  • 读写mysql
  • http/rpc请求
  • pb/json/xml处理?

四、高级
GDB
出core后如何调试
内存泄露,cpu狂涨的原因追查

五、优秀的开源项目
sqlite
redis
nginx

六、其他
union,联合体?

make -j 8 #多线程编译

符号:
::
<<
->
&

.

标识符:
https://www.runoob.com/w3cnote/cpp-keyword-intro.html
auto,声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符
static,在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁
const_cast
dynamic_cast
static_cast
reinterpret_cast
delete
explicit
export
extern
friend
mutable
operator
register,用于定义存储在寄存器中而不是 RAM 中的局部变量
template
this
typedef #为一个已有的类型取一个新的名字
typeid
typename
union
virtual
volatile
wchar_t

三字符组, 不常见?

数据结构?

std::vector
std::map
std::unordered_map
std::pair

std::max
std::rand()
std::shared_ptr

std::accumulate
boost::random::discrete_distribution<>
boost::random::mt19937 gen((unsigned int) std::time(NULL));
boost::split
boost::is_any_of(",")
boost::lexical_cast
std::make_pair

函数参数:传值调用
指针调用
| 引用调用 |

c++指针
引用

三、常用类库
std::unordered_map
std::shared_ptr
std::string
c++ 使用pb?

多线程编程?
操作pb?

四、常见问题?
1.# error passing 'const' as 'this' argument

  1. 简单语法了解

  2. 常用类库

  3. virtual, 接口定义?Base的虚拟函数,子类可以重写虚拟函数。

  4. typedef,

类型转换:str 转int 等

你可能感兴趣的:(C++)