03 2014 档案

摘要:先看下面一段代码:class Node {};Node* CreateNode(){ }void Solve(){ Node *p=CreateNode(); //调用CreateNode函数 ... delete p; //释放资源}这样释放资源(delete)做法是正确的。但是,我们怎么能保证其他人在利用这个代码时在delete之前会不会使用continue语句或者return语句跳过delete,这样一来的话不就无法释放资源浪费资源了吗。有什么办法呢?即在程序结束之前一定会自动释放资源。auto_ptr(智能指针):其析构函数自动对其所指的函数调... 阅读全文
posted @ 2014-03-19 21:42 Mr. Ant 阅读(899) 评论(0) 推荐(0) 编辑
摘要:现看这样一个程序:void logCall(const string& funcname) //标记记录{ cout <<funcname <<endl;}class Custom{ public: Custom(const Custom& p):name(p.name) { logCall("Custom copy constructor!") } Custom& operator=(const Custom& p) { logCall("Custom copy assignment operator!&q 阅读全文
posted @ 2014-03-19 17:18 Mr. Ant 阅读(225) 评论(0) 推荐(0) 编辑
摘要:概念:编译器可以暗自为class创建default构造函数、copy构造函数、copy assignmengt构造函数,以及析构函数。比如你写下:struct Node{};这就好像你写下这样的代码:struct Node{ Node(){} //default构造函数 Node (const Node& p){} //copy构造函数 ~Node(){} //析构函数 Node& operator=(const Node& p){} // copy assignment操作符};唯有当这些函数被需要(被调用),它们才会被... 阅读全文
posted @ 2014-03-19 10:09 Mr. Ant 阅读(458) 评论(0) 推荐(0) 编辑
摘要:本人介绍的排序算法主要有:插入排序,选择排序,冒泡排序,快速排序,堆排序,归并排序,希尔排序,二叉树排序,桶排序,基数排序(后两者为非比较排序,前面的为比较排序)。 排序的稳定性和复杂度: 不稳定: 选择排序(selection sort)— O(n2) 快速排序(quicksort)— O(nlo 阅读全文
posted @ 2014-03-13 13:21 Mr. Ant 阅读(3454) 评论(7) 推荐(4) 编辑
摘要:C++析构前言析构函数在什么时候会自动被调用,在什么时候需要手动来调用,真不好意思说偶学过C++…今日特此拨乱反正。C++析构误解正文对象在构造的时候系统会分配内存资源,对一些数据成员进行初始化或者赋值;一个良好的class需要有资源回收的机制,而这一操作便落在了析构函数的头上,析构函数来负责类内的资源的free。来看一段代码:class myclass{ public: myclass() { cout #include #include #include using namespace std;class myclass{ p... 阅读全文
posted @ 2014-03-06 21:06 Mr. Ant 阅读(271) 评论(0) 推荐(0) 编辑
摘要:虚函数是动态多态性的基础,其调用的方式是动态连篇(简单解释为只有在程序运行时才决定调用的是基类还是基类的派生类,系统会根据指针指向的对象来决定要调用的函数)非虚函数与其相反,是静态连篇(简单解释为在编译时期就已经决定了要调用的函数)class Shape{ public: Shape(){}; void draw() { cout draw(); s=new Circle(); s->draw(); return 0;}我主程序中的意思是要画方形和画圆形,可执行的结果都是画图形(叫你两儿子出来,怎么出来的都是你啊,扯... 阅读全文
posted @ 2014-03-06 20:43 Mr. Ant 阅读(665) 评论(0) 推荐(0) 编辑
摘要:一:静态数据成员:类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点:1、静态数据成员的定义。静态数据成员实际是类域中的全局变量,其定义方式与全局变量相同。例如:class base{ private: static const int x;};const int base::x=10; //初始化时不受private和protected访问限制注意:不要试图在头文件中定义(初始化)静态数据成员。2、静态数据成员被类的所有... 阅读全文
posted @ 2014-03-06 19:59 Mr. Ant 阅读(433) 评论(0) 推荐(0) 编辑
摘要:1、sizeof是运算符,而strlen是函数。2、sizeof操作符的运算结果为size_t,他在头文件中的typedef为unsigned int。该类型保证能容纳所操作对象的最大字节大小。3、sizeof可以用类型做参数,而strlen只能用char*做参数,且必须是以‘\0’结尾。4、数组做sizeof参数不退化,而做strlen就退化成指针。5、大部分编译程序在编译的时候就把sizeof处理过了,这就是sizeof(x)可以用来作为数组空间大小的原因。char str[20]=“0123456789”;a=strlen(str); // a=10,运行时确定b=sizeof(st.. 阅读全文
posted @ 2014-03-06 15:37 Mr. Ant 阅读(2096) 评论(0) 推荐(0) 编辑
摘要:基础篇:操作系统、计算机网络、设计模式一:操作系统1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)5. 线程的实现方式. (也就是用户线程与内核线程的区别)6. 用户态和核心态的区别。7. 用户栈和内核栈的区别。8. 内存池、进程池、线程池。(c++程序员必须掌握)9. 死锁的概念,导致死锁的原因.10. 导致死锁的四个必要条件。11. 处理死锁的四个方式。12. 预防死锁的方法、避免死锁的方法。13. 进程调度算法。(周转时间 =程序结束时间 -- 开始服务时间、带 阅读全文
posted @ 2014-03-06 14:59 Mr. Ant 阅读(407) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示