使用模板实现编译期间多态

#include <iostream>
using namespace std;

class DemoOne{
public:
	void f(bool someParm=true){ cout<<"DemoOne f functions\n";}
	void g(){ cout<<"DemoOne g functions\n";}
	// other functions...
};

class DemoTwo{
public:
	void f(){ cout<<"DemoTwo f functions\n";}
	void g(double a=1.12,double b=1.123){ cout<<"DemoTwo g functions\n";}
	// other functions...
};

template<typename T>
void h(T& t){
	t.f();
	t.g();
}

int _tmain(int argc, _TCHAR* argv[])
{
	DemoOne one;
	DemoTwo two;
	h(one);
	h(two);

	return 0;
}

时间: 2024-11-01 02:34:27

使用模板实现编译期间多态的相关文章

C++:显示接口&amp;amp;运行期多态 和 隐式接口&amp;amp;编译期多态

类(class)和面向对象: 显示接口(explicit interface): 即在源代码中可见, 可以在头文件内看到类的所有接口; 运行期多态(runtime polymorphism):成员函数是virtual, 传入类的引用或指针时, 在运行时, 会自动匹配接口, 可能是基类的接口, 也可能是派生类的; 模板(templates)和泛型编程(generic programming): 隐式接口(implicit interface):typename T, 在函数中, 所必须支持一组操作

C++箴言:理解隐式接口和编译期多态

object-oriented programming(面向对象编程)的世界是围绕着 explicit interfaces(显式接口)和 runtime polymorphism(执行期多态)为中心的.例如,给出下面这个(没有什么意义的)的 class(类). class Widget { public: Widget(); virtual ~Widget(); virtual std::size_t size() const; virtual void normalize(); void s

c++在编译期间都做了些什么

问题描述 c++在编译期间都做了些什么 看了这张ppt之后,很好奇编译期间都做了哪些工作1.是不是不同的编译器不一样的?如果不一样就讲讲主流的像vs这样的吧(zl一直用vs,不知道大神有更好的推荐吗)2.const 在编译期间就被赋值了,有没有其他变量也是在编译期间赋值?全局变量?静态变量?宏?3.主要还是讲讲编译的时候几个步骤吧请大神讲的详细一点!不胜感激! 解决方案 找一个idapro,反编译生成的exe,可以很直观地看到编译器做了什么.你的ppt上说的那些只是语言规范,和编译器怎么实现的不

ThinkPHP 模板函数编译及导入文件详解

ThinkPHP模板变量的函数调用格  代码如下 复制代码 {$varname|function1|function2=arg1,arg2,### } 说明: { 和 $ 符号之间不能有空格,后面参数的空格就没有问题 ###表示模板变量本身的参数位置 支持多个函数,函数之间支持空格 支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表 支持变量解析缓存功能,重复变量字串不多次解析 使用例子:  代码如下 复制代码 {$webTitle|md5|strtoupper|substr=0,3} 编

Ember.js 模板预编译的学习笔记

Ember.js 里,如果把模板直接写在 index.html 文件中,是这样写的:  代码如下 复制代码 <script type="text/x-handlebars" data-template-name="application"> // 最顶级的模板 ... {{outlet}} </script> <script type="text/x-handlebars" data-template-name=&q

深入浅出OOP(一): 多态和继承(早期绑定/编译时多态)

在本系列中,我们以CodeProject上比较火的OOP系列博客为主,进行OOP深入浅出展现. 无论作为软件设计的高手.或者菜鸟,对于架构设计而言,均需要多次重构.取舍,以有利于整个软件项目的健康构建,有些经验是前辈总结的,我们拿来使用即可,有些是团队知识沉淀的,总之复用前人好的思想有利于减少返工.当然,在面试的时候,如果能围绕OOP大谈特谈,自然会加分多多的. 开始阅读本系列博客的预备知识,多态.封装.面向对象编程等,请通过MSDN学习.如下图的术语,您应该耳熟能详的.本系列文章使用C#作为唯

C++模板编程

原文链接:http://www.cppblog.com/besterChen/archive/2010/07/22/121000.html 当我们越来越多的使用C++的特性, 将越来越多的问题和事物抽象成对象时, 我们不难发现:很多对象都具有共性. 比如 数值可以增加.减少:字符串也可以增加减少. 它们的动作是相似的, 只是对象的类型不同而已. C++ 提供了"模板"这一特性, 可以将"类型" 参数化, 使得编写的代码更具有通用性. 因此大家都称模板编程为 &quo

C++模板

来源:http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.html 来源:http://www.cnblogs.com/L-hq815/archive/2012/08/01/2619135.html 来源:http://blog.csdn.net/qq_28796345/article/details/51288045         模板并非一个实实在在的类或函数,仅仅是一个类和函数的描述.由于模板可以实现逻辑相同.数据类型不同的程序

C++ 多态分析

貌似公司面试都喜欢问多态,今天做个总结记录. 1.什么是多态 多态就是Polymorphism,一个接口的多种实现.在不同的上下问下,接口的实现表现出不同的特征. 2.多态的好处 多态带来两个明显的好处:一是不用记大量的函数名了,二是它会依据调用时的上下文来确定实现.确定实现的过程由C++本身完成另外还有一个不明显但却很重要的好处是:带来了面向对象的编程. 3.多态的实现 函数重载,宏多态,模板函数,虚函数. 3.1函数重载(function overloading) 不同的参数列表,不同的返回