当前位置:   article > 正文

C++自学要多久才能学会?_c++多久可以上手

c++多久可以上手

虽然编程语言有很多,但在需要顶级性能的项目上,基本都会使用C++。尤其是机器人、自动驾驶、AI等嵌入和实时系统,都是C++的主要应用方向,在这种层面,几乎没有竞争者。比如百度的搜索引擎、推荐引擎等核心产品,腾讯几乎所有产品都是C++开发。

C++的性能固然强大,但它的范式和机制也给开发者造成很大的负担:

一是 项目开发效率低 ;

二是 学习困难,不好上手 ;

这也导致企业要想招一个合格的C++程序员十分困难!其实,C++的难点主要集中在“位操作”和“指针”,很多人纵使学的非常用心也依旧不能深入理解,搞得非常痛苦。

C++基础(3个月)

1、面向对象的三大特性:封装、继承、多态

封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是:代码重用。而多态则是为了实现另一个目的——接口重用。

2、类的访问权限:private、protected、public

3、类的构造函数、析构函数、赋值函数、拷贝函数 ## 4、移动构造函数与拷贝构造函数对比

4、C++11新出的,可以不用管。

5、深拷贝与浅拷贝的区别

浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,

深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存

6、空类有哪些函数?空类的大小?

构造函数、析构函数、拷贝构造函数、赋值函数。大小1字节

7、内存分区:全局区、堆区、栈区、常量区、代码区

8、C++与C的区别

a.属性

new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持c。

b.参数

使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸

分配失败

new内存分配失败时,会抛出bac_alloc异常。malloc分配内存失败时返回NULL。

9、struct与class的区别

默认的继承访问权。class默认的是private,strcut默认的是public。

“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数

10、struct内存对齐

步骤一:前面单元的大小必须是后面单元大小的整数倍,如果不是就补齐

步骤二:整个结构体的大小必须是最大字节的整数倍

11、new/delete与malloc/free的区别

malloc开辟空间类型大小需手动计算,new是由编译器自己计算;

(2)malloc返回类型为void*,必须强制类型转换对应类型指针,new则直接返回对应类型指针;

(3)malloc开辟内存时返回内存地址要检查判空,因为若它可能开辟失败会返回NULL;new则不用判断,因为内存分配失败时,它会抛出异常bac_alloc,可以使用异常机制;

12、内存泄露的情况

内存泄露情况

13、sizeof与strlen对比

sizeof() 是可用来计算字符串的总长度,包括\0,而strlen()计算不包含\0的字符串的长度,遇到 \0 就会被截断。

sizeof()指出整个数组的长度;而strlen()返回的是存储在数组中的字符串的长度,而不是数组本身的长度。

int 一个元素为4个字节, char一个元素为1个字节。

13.1、指针与引用的区别

指针与引用

14、野指针产生与避免

野指针

15、多态:动态多态、静态多态

静态多态:在系统编译期间就可以确定程序将要执行哪个函数

动态多态是利用虚函数实现运行时的多态,只有在运行到这里的时候才能确定接下来会跳转到哪一个函数。

16、虚函数实现动态多态的原理、虚函数与纯虚函数的区别

多态原理

17、继承时,父类的析构函数是否为虚函数?构造函数能不能为虚函数?为什么?

虚函数

18、静态多态:重写、重载、模板

19、static关键字:修饰局部变量、全局变量、类中成员变量、类中成员函数

20、const关键字:修饰变量、指针、类对象、类中成员函数 21、extern关键字:修饰全局变量

22、volatile关键字:避免编译器指令优化

23、四种类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

25、右值引用

26、std::move函数

move函数

27、四种智能指针及底层实现:auto_ptr、unique_ptr、shared_ptr、weak_ptr

28、shared_ptr中的循环引用怎么解决?(weak_ptr)

29、vector与list比较

30、vector迭代器失效的情况

31、map与unordered_map对比

32、set与unordered_set对比

33、STL容器空间配置器

所以,学习c++是挺难的,but认真学也是可以的

加油!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/917610
推荐阅读
相关标签
  

闽ICP备14008679号