Effective C++ 44:将参数无关代码重构到模板外去

Effective-C++ C++ 内存 多态 模板

把模板中参数无关的代码重构到模板外便可以有效地控制模板产生的代码膨胀。另外代码膨胀也可以由类型模板参数产生:对于非类型模板参数产生的代码膨胀,用函数参数或数据成员来代替模板参数即可消除冗余;对于类型模板参数产生的代码膨胀,可以让不同实例化的模板类共用同样的二进制表示。

CSS 选择器总结

CSS DOM HTML 伪类 选择器

我们知道CSS是由选择器和属性/值列表构成的,选择器的重要性自然不言而喻。 作为前端开发者选择器想必不是问题,然而前几天面试还真问到了~+是干吗用的! 长时间不用的选择器自然就会忘了,来总结一下吧!

万维网联盟在 HTML 4.0 之外提出层叠样式表(CSS),使用CSS完成样式与内容的分离。层叠样式表(Cascading Style Sheets,CSS), 又称串样式列表、层次结构式样式表文件,一种用来为结构化文档(如HTML文档或XML应用)添加样式(字体、间距和颜色等)的计算机语言,由W3C定义和维护。

CSS共有5种基本选择器:

  1. 类型选择器(h1,p等):用于选择指定类型的HTML标签;
  2. 类选择器(.classname):用于选择指定class的HTML标签;
  3. ID选择器(#idname):用于选择指定id的HTML标签;
  4. 通配符选择器(*):用于选择所有类型的HTML标签;
  5. 属性选择器([foo='bar']):用于选择某属性为指定值的HTML标签;

和2种伪选择器:

  1. 伪类选择器:用于选择特定状态的元素。
  2. 伪元素选择器:如:before,:first-letter,用于向某些选择器设置特殊效果,以实现复杂的样式。

还有各种组合选择器(例如 , +, >, ~),用来选择拥有特定层级的元素。至于CSS选择器发生冲突时它们的优先级,参见另一篇文章: CSS规则的优先级匹配

Effective C++ 43:访问模板基类中的名称

Effective-C++ C++ 模板 继承 特化 继承 作用域

从面相对象C++转移到模板C++时,你会发现类继承在某些场合不在好使了。比如父类模板中的名称对子类模板不是直接可见的,需要通过this->前缀、using或显式地特化模板父类来访问父类中的名称。

Effective C++ 40:明智地使用多继承

Effective-C++ C++ 多继承 接口类 名称隐藏 对象组合

多继承比单继承复杂,引入了歧义的问题,以及虚继承的必要性;虚继承在大小、速度、初始化/赋值的复杂性上有不小的代价,当虚基类中没有数据时还是比较合适的;多继承有时也是有用的。典型的场景便是:public继承自一些接口类,private继承自那些实现相关的类。

上一页 下一页