摘要:
1、开始编写代码时,不要过多考虑效率,而应该首先考虑逻辑的清晰性和代码的可读性。2、后期通过测试找到效率的瓶颈所在,而不是靠猜测。然后,针对性地去解决。也就是80%的时间去解决这20%的代码。
阅读全文
posted @ 2014-02-25 20:16
Andy Niu
阅读(234)
推荐(0)
编辑
摘要:
1、首先考虑new operator,new operator 可以认为做了三件事情:a、调用operator new分配一块内存;b、在这块内存上调用构造方法构造对象;返回指针。2、operator new的声明如下: void* operator new(size_t size) 和C中的malloc一样,operator new只负责分配内存。3、考虑,string* ps = new string("hello"); 相当于做了下列事情: a、void* memory = operator new (sizeof(string)); b、在*memory上面,调用s
阅读全文
posted @ 2014-02-25 20:05
Andy Niu
阅读(414)
推荐(0)
编辑
摘要:
原文:http://www.cnblogs.com/ifaithu/articles/2657663.htmlC#C++C多线程面试1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针
阅读全文
posted @ 2014-02-25 19:21
Andy Niu
阅读(341)
推荐(0)
编辑
摘要:
原文:http://blog.csdn.net/dongfengsun/article/details/1541926①链表反转单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:struct linka {int data;linka* next;};void revers
阅读全文
posted @ 2014-02-25 19:19
Andy Niu
阅读(663)
推荐(0)
编辑
摘要:
1、考虑UPint 的加法+,UPint a, b, result; 为了使result = a+10; result= 10+a; 都能通过编译,操作符重载如下: const UPint operator+(const UPint& lhs, const UPint& rhs); 注意:不能使用成员操作符,否则result= 10+a;编译错误,因为隐式类型转换不能转换为this指针。2、在result = 10+a;调用的过程中,10会隐式转换为UPint(条件是UPint单一形参构造方法不是explicit),这导致临时对象的产生,效率降低。3、怎么解决这个问题呢? 增加
阅读全文
posted @ 2014-02-25 19:15
Andy Niu
阅读(328)
推荐(0)
编辑
摘要:
1、考虑++(--的情况是一样的),前置是累加然后取出,后置是取出然后累加。2、重载方法根据形参表的不同区分,问题来了,前置和后置形式都没有形参,因此没法区分。怎么办? 对于后置增加一个形参int,在方法内并不使用这个形参,因此去掉形参名。3、考虑UPint(unlimited precision int)类,对于前置,返回引用,实现如下: UPint& UPint::operator++() { *this+=1; return *this; }4、考虑后置,后置返回老的对象。为了保证前置和后置的结果一致性,和代码的复用,使用后置调用前置。如下: const UPint...
阅读全文
posted @ 2014-02-25 18:54
Andy Niu
阅读(641)
推荐(0)
编辑
摘要:
1、C++对于真假值表达式采用“骤死式”评估方法,比如&&,||。 if( p!=NULL&& strlen(p)>10) 如果p为NULL,后面的strlen不会被执行。 if(index upper) 如果index += -= *= /= %= ^= &= |= > >>= = && || ++ -- , ->* -> () []7、对于允许重载的操作符,必须有个好理由,才去重载。
阅读全文
posted @ 2014-02-25 18:29
Andy Niu
阅读(839)
推荐(0)
编辑