面试题
文章平均质量分 52
专注客户端技术
这个作者很懒,什么都没留下…
展开
-
一个简单的递归问题
见代码: #include using namespace std; class Sample { public: Sample(int x):m_x(x){} int get()const; private: int m_x; }; int Sample::get()const { return m_x; } int fun(Sample s) {原创 2013-05-18 13:22:15 · 688 阅读 · 0 评论 -
只能在栈上或者堆上创建对象
首先你要明白在栈上创建对象和在堆上创建对象的过程: 在栈上创建对象,系统会在栈上分配一块能存放这个类型的对象的内存,然后调用构造函数构造对象,初始化对象的成员。在对象的生命期结束时,首先调用析构函数销毁对象,然后系统自动回收这块内存。 使用new在堆上创建对象,首先调用operate new在堆上分配一块能存放这个类型的对象的内存,然后调用构造函数构造对象,初始化对象的成员,然后返回相应指针。原创 2013-05-01 14:58:58 · 791 阅读 · 0 评论 -
C语言高效编程的的四大绝招(转载)
引言: 编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。 第一招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。 例如:字符串的赋值。 方法A:通常的办法: #define LEN 32 char string1原创 2013-08-28 14:21:36 · 615 阅读 · 0 评论 -
用C++ 写一个不能被继承的类
条件:用C++写一个不能被继承的类,但这个类既可以在栈上实例化也可以在堆上实例化。 如果一个类不能被继承,我第一想到的是这个类的构造函数为private.如果要可以在堆上实例化,我就想到使用静态成员函数模拟构造函数的功能,内部创建堆上对象。再使用静态成员函数负责释放动态分配的对象。使用静态成员函数也可以创建静态数据区上的对象。但是这种方法不能在栈上实例化。所以方法不行,继续想!原创 2013-09-02 15:43:09 · 839 阅读 · 0 评论 -
不用中间变量实现交换
void swap(int& lhs, int& rhs) { lhs=lhs+rhs; rhs=lhs-rhs; lhs=lhs-rhs; } void swap(int& lhs, int& rhs) { lhs=lhs^rhs; rhs=lhs^rhs; lhs=lhs^rhs; } 当lhs,rhs相加的结果超过了int的最大范围,则会有溢出的情原创 2013-08-21 21:58:58 · 607 阅读 · 0 评论 -
面试基础题之一:构造函数体中只调用memset将对象的字节内容都置0,有什么安全隐患?
#include using namespace std; class Base { public: Base(){ memset(this,0,sizeof(*this)); } }; 个人觉得 第一点、如果类中有const数据成员或const引用的话,只有在构造函数的成员初始化列表中初始化 。 第二点、如果类中有虚函数的话,memset会使得虚函数表指针的值置0,则原创 2013-05-21 20:29:19 · 1620 阅读 · 0 评论