More Effective C++之19

原创 2006年06月14日 13:32:00
条款19:了解临时对象的来源
我们常常写一些代码,int nTemp = 0;之类的,可能我们习惯于称呼这类变量为临时变量或者临时对象,然后C++不是这样想,C++称之为局部对象。类似于

string ReturnString(char* str)

{
       return str;
}
如果我们这样写:
string sTemp;

sTemp = ReturnString(“Test”);

就产生了一个不具名的对象,这个对象就称为C++的临时对象。
所以这一条的重点是临时对象产生在什么地方:一、系统默认的对象隐式转换;二是返回值的转换。这两种问题的解决办法在后面都有提及。稍后继续。

相关文章推荐

More Effective C++----(19)理解临时对象的来源

Item M19:理解临时对象的来源 当程序员之间进行交谈时,他们经常把仅仅需要一小段时间的变量称为临时变量。例如在下面这段swap(交换)例程里: template void swap(T...

理解临时对象的来源(More Effective C++_19(效率))

本文探讨临时对象的来源,怎么避免临时对象,本文并没有深入涉及,在效率中的其他小节,有具体方法去解决一、 区别临时对象和局部对象templatevoid swap(T& object1, T& obje...

More Effective C++之Item M19:理解临时对象的来源

临时对象产生场景: 1.类型隐式转换; 2.函数值返回; 当程序员之间进行交谈时,他们经常把仅仅需要一小段时间的变量称为临时变量。例如在下面这段swap(交换)例程里: templat...

指针和引用的区别(More Effective c++ )

指针与引用看上去完全不同(指针用操作符“*”和“->”,引用使用操作符“. ” ),但 是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候 使用指针,在什么时候使用...

《More Effective C++》条款27:如何让类对象只在栈(堆)上分配空间?

昨天一个同学去网易面试C++研发,问到了这么一个问题:如何限制一个类对象只在栈(堆)上分配空间? 一般情况下,编写一个类,是可以在栈或者堆分配空间。但有些时候,你想编写一个只能在栈或者只能在堆上面分...
  • hxz_qlh
  • hxz_qlh
  • 2013年10月26日 21:27
  • 5925

More Effective C++:Item 27

温习More Effective C++,对于Item 27:要求或禁止在堆中产生对象,整理思路于此文。编译期控制通过禁用编译器产生对象所需的选项即可在编译期阻止对象被定义。产生堆对象所需的选项: ...

More Effective C++之Item M21:通过重载避免隐式类型转换

C++规则:每一个重载的operator必须带有一个用户定义类型(user-defined type)的参数; 以下是一段代码,如果没有什么不寻常的原因,实在看不出什么东西: class UP...

More Effective C++----技巧 & (25)将构造函数和非成员函数虚拟化

技巧 本书涉及的大多数内容都是编程的指导准则。这些准则虽是重要的,但是程序员不能单靠准则生活。有一个很早以前的卡通片叫做“菲利猫”(Felix the Cat), 菲利猫无论何时遇到困难,它都会拿...

More Effective C++议题【一】:指针和引用

> 学习笔记【一】 这个议题作为第一个建议出现在了 More effective ++中, 在一开始,第一件事就是提醒了我们关于指向空值的引用. 即如下代码出现的可能性: char *pc = 0; ...

More Effective C++----(10)在构造函数中防止资源泄漏

Item M10:在构造函数中防止资源泄漏 如果你正在开发一个具有多媒体功能的通讯录程序。这个通讯录除了能存储通常的文字信息如姓名、地址、电话号码外,还能存储照片和声音(可以给出他们名字的正确发音...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:More Effective C++之19
举报原因:
原因补充:

(最多只允许输入30个字)