条款50: 提高对C++的认识
class Base {
public:
  virtual void f(int x);
};
class Derived: public Base {
public:
  virtual void f(double *pd);
};
Derived *pd = new Derived;
pd->f();                            // 错误!名字查找先于类型检查,现在derived类中找到f函数,然后进行类型检查,报错
问题在于Derived::f隐藏了Base::f,即使它们取的是不同的参数类型;所以编译器要求对f的调用取一个double*,而10这个数字当然不行。
如果想让Derived的用户可以访问Base::f,可以很容易地通过一个using声明来完成:
class Derived: public Base {
public:
  using Base::f;                   // 将Base::f引入到
                                   // Derived的空间范围
  virtual void f(double *pd);
};
Derived *pd = new Derived;
pd->f();                         // 正确,调用Base::f
条款50: 提高对C++的认识的更多相关文章
- Effective C++ 条款 50:了解new和delete的合理替换时机
		
(一) 为什么有人想要替换operator new 和 operator delete呢?三个常见的理由: (1)用来检測运用上的错误. (2)为了强化效果. (3)为了收集使用上的统计数据. (二) ...
 - Effective C++ -----条款50:了解new 和delete 的合理替换时机
		
有许多理由需要写个自定的new 和delete ,包括改善效能.对heap 运用错误进行调试.收集heap 使用信息.
 - 条款50:使用自定义的new以及delete的时机会
		
几种最常见的这么做的理由: 1.用来检测运行上的错误:可以在分配的内存空间的起始以及结束分别放置单独的签名 2.为了强化性能 3.为了收集使用上的统计数据 按照第一点就可以举一 ...
 - Effective C++ 50条款
		
条款1:尽量用const和inline而不用#define 以const 行使常量折叠,用inline 代替常用操作的宏定义,而且库里面有很多常用函数可用.当然不能抛弃宏,宏还是很有用滴.偶最近才发现 ...
 - 转:Effective c + + notes
		
补充自己的. 转自:http://blog.csdn.net/ysu108/article/details/9853963#t0 Effective C++ 笔记 目录(?)[-] 第一章 从C转向C ...
 - Effective c++ 小结
		
来源:http://www.cnblogs.com/feisky/archive/2009/11/04/1595990.html 最近又重新看了Effective C+,不过到现在还是有好多地方不懂的 ...
 - EC读书笔记系列之19:条款49、50、51、52
		
条款49 了解new-handler的行为 记住: ★set_new_handler允许客户指定一个函数,在内存分配无法获得满足时被调用 ★Nothrow new是一个颇为局限的工具,∵其只适用于内存 ...
 - Effective C++ 条款27
		
尽量少做转型动作 尽量少做转型动作有什么目的?非常明显无非就是提高程序的稳定性.提高程序的运行效率. 那么.有哪些转型方式?每种方式都有什么弱点? 这是我们本节学习的重点. C++有四种转型: con ...
 - STL笔记(5)条款49:学习破解有关STL的编译器诊断信息
		
STL笔记(5)条款49:学习破解有关STL的编译器诊断信息 条款49:学习破解有关STL的编译器诊断信息 用一个特定的大小定义一个vector是完全合法的, vector<int> v( ...
 
随机推荐
- Hadoop Hive概念学习系列之hive的数据压缩(七)
			
Hive文件存储格式包括以下几类: 1.TEXTFILE 2.SEQUENCEFILE 3.RCFILE 4.ORCFILE 其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直 ...
 - SVN版本库的备份及迁移
			
备份某个版本库:打开控制台窗口 1.备份某个版本库: svnadmin dump myrepos > dumpfile //将指定的版本库导出成文件dumpfile eg:svnadmin du ...
 - Eclipse+JUnit+Selenium配置
			
运行环境:Windows XP.Firefox.Firefox需要安装在标准路径下"C:\Program Files\Mozilla Firefox\firefox.exe",否则 ...
 - 【译】x86程序员手册28-7.7任务地址空间
			
7.7 Task Address Space 任务地址空间 The LDT selector and PDBR fields of the TSS give software systems desi ...
 - 没搞错吧,我只是个web前端工程师,不是manager,也不是leader...
			
那个时候,我只想好好的学习web前端技术,恨不得把有限的时间和精力都放在提升技术上. 然而,让自己在坑里茁壮成长,要先适应坑内的环境. 首当其冲我们要弄明白的事情有: 团队成员的技术能力和状态 Lea ...
 - sql IIF函数的应用
			
工作中由于用各种框架,业务也不是很复杂,一直没怎么写过复杂的sql,今天写了一个 数据如下 代码如下 Sub 班级分数等级分析(shname) Dim Con As Object, rs As Obj ...
 - ThinkPHP---layer插件
			
[概论] (1)layer是基于jquery开发的一款美化弹框的插件,主要用于弹框效果的交互.但其他功能和组件也日益完善 官网:http://layer.layui.com 在线手册:http://w ...
 - 【原】Python学习
			
1.常用模块介绍 #python -m SimpleHTTPServer 执行上面的命令就会在服务器当前目录下启动一个文件下载服务器,默认打开8000端口.这个时候,你只需要将IP和端口告诉客户端,即 ...
 - P4817 [USACO15DEC]Fruit Feast 水果盛宴
			
P4817 [USACO15DEC]Fruit Feast 水果盛宴 现在Bessie的饱食度为 00 ,她每吃一个橙子,饱食度就会增加 AA :每吃一个柠檬,饱食度就会增加 BB .Bessie还有 ...
 - CentOS7安装Nginx及其相关
			
一.安装所需环境 gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装. yum install gcc-c++ PCRE pcr ...