摘要: 虚函数可以被声明为inline,这是毫无疑问的,因为inline同register一样,只是对编译器的建议。 那么inline virtual函数是否会被内联展开呢?答案是可以! 有的人说不能,理由是virtual的意思是"等到运行时再决定调用哪个函数",inline的意思是"在编译期间将调用之处用被调函数来代替",如果编译器甚至还不知道哪个函数将被调用,当然就不能责怪它拒绝生成内联调用了。 ... 阅读全文
posted @ 2013-06-03 20:59 helloweworld 阅读(1070) 评论(0) 推荐(0) 编辑
摘要: 这个条款在More Effective C++里有进一步的说明,推迟变量的定义被叫做“缓式评估”。 产生本条款做法的根本原因是构造和析构函数有开销。 文中给出了一个例子,如下: // 此函数太早定义了变量"encrypted"string encryptPassword(const string& password){ string encrypted; if (password.lengt... 阅读全文
posted @ 2013-06-03 19:47 helloweworld 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 千万不要返回局部对象的引用——局部对象在函数调用完成后被销毁了,若返回其引用,引用的对象都没有了,引用就没意义了。 不要返回函数内部用new初始化的指针的引用——即在一个函数中用new申请一片内存,然后返回指向这片内存的指针,语法和编译上都没错误,但给使用设下了陷阱,因为调用者很可能忘了用delete释放内存,造成内存泄露。 阅读全文
posted @ 2013-06-03 19:38 helloweworld 阅读(254) 评论(0) 推荐(0) 编辑