想学 C++,能不能直接从最新的 C++20 开始?
但我认为对于后来者想学习的话,应该是有优势的,可以抛弃一些历史包袱,从最新的开始学。
C++是越来越复杂了,还是越来越好用了呢?
举个典型例子:调用一些库,需要传递一个 buffer 进去接收字符串并保存到 std::string 的情景。
以前经常看到这种写法:
auto len = get_string_length();
char* buffer = new char[len];
get_string(buffer);
std::string result(buffer, len);
delete[] buffer;
return result;
但是从 C++ 17 开始,可以这么写:
auto len = get_string_length();
std::string result;
result.resize(len);
get_string(result.data());
return result;
后者与前者相比:代码更加简洁,少了一次拷贝,不需要手动释放内存,在遇到异常时不会导致内存泄漏。
另外按照 Stack Overflow 上的说法,自 C++11 开始就能用这种方法了,要把 string.data() 换成 &string[0]
https://stackoverflow.com/questions/1042940/writing-directly-to-stdstring-internal-buffers
以我学习不同语言的经验,我当时就直接开始做。写代码,开始是内部课程的作业,找组里的人给我 code review. 然后是一些简单的业务逻辑,有其他人给我 reivew 慢慢就上手了。