More Effective C++之12

原创 2006年06月03日 18:10:00
条款12:了解[掷出一个exception]与[传递一个参数]或[调用一个虚函数]之间的差异
       这个地方我在我先前关于异常的部分论述的比较清楚,这里只是写一些以前不曾写过的细节。第一个要点是异常抛出的如果是一个指针,那么C++没有义务顾及指针指向的地址,那么指针指向的内容需要用户负责,也就是说程序员需要保证指针指向的内容有效。其他方式,无论是值传递还是引用传递都是会自动复制一个对象副本,因为需要保证对象没有出生命域,依然存在。所以传递参数和抛出异常在同样情况下速度是不同的。第二,异常的抛出在以值传递和引用传递的时候,考虑抛出对象都是以对象的静态型别,所以特别需要注意的是不要对象切片了。
考虑两段代码:
catch(A& a)
{
throw;
}
catch(A& a)
{
Throw a;
}
       这两段代码的意义是不同的。上面代表异常的Rethrow,对象是不拷贝的。而下面只是对象的抛出,这时候会发生对象拷贝,也就是说抛出的是副本。
       还有需要注意的是,对异常捕获不要去期待隐式转换。因为异常捕获只支持两种转换,一种是继承架构中的exception转换,一种是有型指针向void指针的转换。
       最后就是catch之句的顺序,通常顺序要是从小范围到大范围,从派生类到基类。

《More Effective C++》读书笔记-技术

25、将构造函数和非成员函数虚化1、这里所谓的虚拟构造函数,并不是真的指在构造函数前面加上 virtual 修饰符,而是指能够根据传入不同的参数建立不同继承关系类型的对象。class NLCompon...
  • will130
  • will130
  • 2016年05月02日 12:27
  • 2778

More Effective C++学习笔记(1)-基础议题

主题 概要 C++ More Effective C++ 基础议题 编辑 时间 新建 20170106 序号 参考资料 1 More ...
  • shaozhenged
  • shaozhenged
  • 2017年01月06日 23:37
  • 386

effective C++ 读书笔记 条款12

条款12 : 复制对象时不要忘记其每一个成分   编写一个类用来表现顾客,其中手动写出copying函数使得外界对它们的调用记录会被logged下来: #include #include ...
  • djb100316878
  • djb100316878
  • 2014年11月15日 15:11
  • 686

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

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

More Effective C++读书笔记(一)

条款1:指针与引用的区别 1、二者之间的区别是:在任何情况下都不能用指向空值的引用,而指针则可以;指针可以被重新赋值以指向另一个不同的对象,但是引用则总是指向在初始化时被指定的对象,以后不能改变 ...
  • necrazy
  • necrazy
  • 2013年11月08日 10:07
  • 697

《Effective C++》学习笔记——条款31

《Effective C++》学习笔记——条款31:将文件间的编译依存关系降至最低
  • lx417147512
  • lx417147512
  • 2015年06月15日 13:51
  • 1364

《Effective C++》让自己习惯C++:条款1-条款4

《Effective C++》条款1到条款4。基本是总结C++的一些特点,尤其是不同于C语言的特点。...
  • KangRoger
  • KangRoger
  • 2014年12月13日 19:26
  • 2347

effective C++ 目录(第三版)

我把目录整理一下,方便在以后工作中查看。 条款01:视C++为一个语言联邦 条款02:尽量以const,enum,inline替换#define 条款03:尽可能使用const 条...
  • u010889616
  • u010889616
  • 2015年12月24日 20:12
  • 516

《Effective C++》读后感

几天前,我曾在微信朋友圈中发了一条消息: 和大牛之间的差距就是这一个书架。 图片来自于微信公众号“二爷鉴书”的分享。 我时常纠结于自己的技术为什么进步的这么慢,大概就是书读的太少、思考的太少。 《E...
  • Since20140504
  • Since20140504
  • 2016年06月27日 12:13
  • 7471

《Effective C++》:条款44-条款45

条款44将与参数无关的代码抽离templates 条款45运用成员函数模板接受所有兼容类型...
  • KangRoger
  • KangRoger
  • 2015年03月12日 22:01
  • 1482
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:More Effective C++之12
举报原因:
原因补充:

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