132.make_shared函数的优点,缺点?
优点:减少了内存分配的次数,降低了系统开销,提高了效率,使用new构造的话至少会进行两次内存分配,(一次为智能指针本身,一次为共享指针的控制块) 缺点:当构造函数是保护或者私有的时候无法使用make_shared函数。 会导致weak_ptr保持控制块,的生命周期,连带着保持了对象分配的内存,只有当最后一个weakptr离开作用域时,内存才会被释放,对于内存要求高的场景来说,是一个需要注意的问题。 133.如何保证类的对象只能被开辟在堆上?(将构造函数声明为私有、单例) 将构造函数设置为私有,这样只能使用new运算符来建立对象,但是我们必须准备一个destory函数来进行内存的释放,然后将析构函数设置为protected,提供一个public的static函数来完成构造,类似于单例模式 如果在栈上分配呢?则是重载new操作符,使得new操作符的功能为空,这样就使得外层程序无法在堆上分配对象,只可以在栈上分配 134.函数调用进行的操作: 1.将参数压栈:按照参数顺序的逆序进行,如果参数中有对象则先进行拷贝构造 2.保存返回地址:即函数调用结束返回后接着执行的语句的地址 3.保护维护函数栈帧信息的寄存器内容如,SP(堆栈指针),FP(栈帧指针)等。 4.保存一些通用寄存器的内容:应为有些通用寄存器会被所有函数用到,所以在函数调用之前,这些寄存器就可能已经放置了对函数有用的信息。 5.调用函数,函数执行完毕 6.恢复通用寄存器的值 7.恢复保存函数栈帧信息的那些寄存器的值 8.通过移动栈指针,销毁函数的栈帧 9.将保存的返回地址出栈,并赋给寄存器。 10.通过移动栈指针,回收传给函数的参数所占用的空间
135.回调函数是什么,为什么要有回调函数?有什么优缺点?回调的本质是什么?
回调函数是指使用者自己定义一个函数,实现这个函数的程序内容,然后别人把这个函数(入口地址)作为参数传入别人的函数中,由别人的函数在运行时来调用的函数,简单说就是放发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。 可以把调用者和被调用者分开。调用者不关心谁是被调用者,所以它只需要知道的,只是一个存在某种特定类型原型,某些限制条件的被调用函数。 优点: 可以让实现方根据回调方的多种形态进行不同的处理和操作可以让实现方,根据自己的需要定制回调方的不同形态 可以将耗时的操作隐藏在回调方,不影响实现方其他信息的展示。让代码的逻辑更加集中,更加易读。 缺点: 回调函数过多会导致代码难以维护 回调函数容易造成资源竞争:如果回调函数中有共享资源访问,容易出现资源争抢,导致程序出错 代码可读性差,可能会破坏代码的结构和可读性 本质:是将函数当作参数使用,目的是为了使程序更加普适。
到此这篇qt中字符串转int(qt将字符串转化为二进制)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-docker-k8s/18338.html