智能指针是一个RAII类模板,用于动态分配内存,其设计思想是将基本类型指针封装为(模板)类对象指针,并在离开作用域时调用析构函数,使用delete删除指针所执行的内存空间。 分为auto_ptr、unique_ptr、shared_ptr和weak_ptr四种,各自的特点: auto_ptr,实现了独占式拥有的概念,同一时间只能由一个只能指针可以指向该对象;...
1). 使用的时候要记得指针的长度. 2). malloc的时候得确定在那里free. 3). 对指针赋值的时候应该注意被赋值指针需要不需要释放. 4). 动态分配内存的指针最好不要再次赋值. 5). 在C++中应该优先考虑使用智能指针. 9. C++11 中有哪些智能指针?shared_ptr 的引用计数是如何实现的?unique_ptr 的unique 是如何...
1.4 简述一下C++的特点 面向对象:C++完全支持面向对象的程序设计,包括封装、继承、多态等面向对象开发的三大特性。 C++更加安全,增加了const常量、引用、四类cast转换(static_cast、dynamic_cast、const_cast、reinterpret_cast)、智能指针、try_catch等等;
独占指针(unique_ptr):独享所有权的智能指针,资源只能被一个指针占有,该指针不能拷贝构造和赋值。但可以进行移动构造和移动赋值构造(调用move() 函数),即一个 unique_ptr 对象赋值给另一个 unique_ptr 对象,可以通过该方法进行赋值。 弱指针(weak_ptr):指向 shared_ptr 指向的对象,能够解决由shared_ptr带来的循...
33 C++ 中类成员的访问权限 34 什么是右值引用,跟左值又有什么区别? 35 面向对象的三大特征 36 说一说 c++ 中四种cast转换 37 C++ 的空类有哪些成员函数 38 对 c++ 中的smart pointer四个智能指针:shared_ptr,unique_ptr,weak_ptr,auto_ptr的理解 ...
(2)extern放在变量或函数前,说明该变量或函数定义在别的文件中,提示编译器去其他模块中找定义,相当于前向声明。 4.指针和引用的区别 (1)引用是直接访问,指针是间接访问。 (2)引用是变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间
4)一个指针可以是volatile 吗?解释为什么。可以。尽管这并不很常见。一个例子当中断服务子程序修该一个指向一个buffer的指针时。 下面的函数有什么错误:int square(volatile int *ptr) {return *ptr * *ptr;}下面是答案:这段代码有点变态。这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一...
(36) 什么情况下会调用拷贝构造函数(三种情况) (37)结构体内存对齐方式和为什么要进行内存对齐? (38)内存泄露的定义,如何检测与避免? (39) C++的智能指针有哪些 (40) 调试程序的方法 (41) 遇到coredump要怎么调试 (42) inline关键字说一下 和宏定义有什么区别 ...
10.什么是智能指针的循环引用?如何解决。 11.数组和指针的区别 12.可变参数模板的作用 13 malloc 的实现原理 14、 C++ 中如何避免拷贝 15、const、#define、inline等的区别 16. shared_ptr的实现以及线程安全性 最近发现学习 C++ 遇到了一些瓶颈,所以打算有空就积累几道面试题,复习巩固一下之前学习的知识。
相反,数据耦合是指数据在各个模块之间通过直接共享(例如,一个或多个模块指向某组共享数据)或通过数据传递(例如,一个模块将指向内部数据结构的指针返回给另一个模块)来共享。主张零耦合显然是荒谬的,因为这种状态意味着任何模块都不能以任何方式与任何其他模块进行通信。然而,在好的设计中,我们确实努力实现低耦合。低...