C++
ZXR_LJ
这个作者很懒,什么都没留下…
展开
-
为什么C++的构造函数不能是虚函数
1.从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2.从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初始化实例,那...转载 2018-03-10 16:54:32 · 408 阅读 · 0 评论 -
引用是否能实现动态绑定,为什么引用可以实现
因为对象的类型是确定的,在编译期就确定了 指针或引用是在运行期根据他们绑定的具体对象确定。原创 2018-03-10 17:26:52 · 3918 阅读 · 0 评论 -
有了malloc/free为什么还要new/delete?
有了malloc/free为什么还要new/delete? malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在...原创 2018-03-11 09:58:06 · 283 阅读 · 0 评论 -
C++中const迭代器和const_iterator的区别
const迭代器,就是不能改变的迭代器,是常量,类似指针常量,不能改变指向的地址,但是可以改变指向地址的内容。例如: vector<int> vv(10,9); const vector<int> :: iterator iter = vv.begin(); 如果出现: ++iter;//报错 就会报错,因为iter...原创 2018-03-18 21:25:22 · 986 阅读 · 0 评论 -
C++——模板(Templates)
函数模板原型定义如下template <class identifier> function_declaration; template <typename identifier> function_declaration;这两种原型定义的不同之处在关键字class或typename的使用。实际是完全等价的,因为两种表达的意思和执行都一模一样。例如,生成一个模...原创 2018-03-19 15:15:32 · 466 阅读 · 0 评论 -
C++面经 TCP/iP ,进程线程、堆栈
1.进程和线程关系及区别定义:关系:线程进程的区别:线程私有和共享那些资源?进程私有和共享那些资源?进程PCB2.进程间、线程间通信方式小结父子进程3.进程间调度算法4.同步与异步的区别5.堆栈的区别请求页面置换策略有哪些方式?他们的区别是什么?各自有什么算法解决?5.TCP建立连接三次握手和释放连接四次握手三次握手:第三次握...原创 2018-03-19 20:42:55 · 2217 阅读 · 0 评论 -
Linux进程通信编程
Linux系统编程—-进程同步与互斥:有名信号量 Linux系统编程—-进程间通信:共享内存 Linux系统编程—-进程间通信:信号中断处理 Linux系统编程—-进程间通信:管道(pipe) Linux系统编程—-进程间通信:消息队列 Linux系统编程—-进程同步与互斥:信号量 https://blog.csdn.net/tennysonsky/article/details/45...原创 2018-05-03 20:14:51 · 423 阅读 · 0 评论 -
source insight进行查找
一、ctrl + 表示跳转到定义 二、查看被调用关系 1.打开窗口:view->relation windows.2.鼠标移动到你需要的函数处,点击relation windows窗口的刷新按钮.3.在relation windows下,鼠标移动到该函数,右击->view relation->references。4.再点击刷新,搞定.三、进行字符串全局搜索 ...原创 2018-06-02 20:06:50 · 3625 阅读 · 0 评论