【足迹C++primer】60、重载和模板

重载和模板

/**
* 功能:重载和模板
* 时间:2014年7月27日16:23:32
* 作者:cutter_point
*/

#include<iostream>
#include<algorithm>
#include<sstream>

using namespace std;

/**
重载模板书写
*/
template<typename T>
string debug_rep(const T &t)
{
    ostringstream ret;
    ret<<t;
    return ret.str();
}

template<typename T>
string debug_rep(T* p)
{
    ostringstream ret;
    ret<<"pointer地址: "<<p<<endl;
    if(p)
        ret<<"指针指向的是:"<<debug_rep(*p)<<endl;
    else
        ret<<" null pointer "<<endl;

    return ret.str();
}

void fun1()
{
    string s("hi");
    cout<<debug_rep(s)<<endl;
    cout<<debug_rep(&s)<<endl;
}

int main()
{
    cout<<">>------------------------------fun1-----------------------------------<<"<<endl;
    fun1();

    system("pause");
    return 0;
}

到这里,关于C++primer就全部完了,这个暑假的基本任务也就基本完成了,接下来要么就是去看thinking in C++和thinking in Java

或者Java学习,进入Ajax技术,学完这个,然后就是hibernate接下来就是spring然后structs,路漫漫兮其修远,吾将上下而求索。

【足迹C++primer】60、重载和模板

时间: 2024-12-11 05:44:51

【足迹C++primer】60、重载和模板的相关文章

【足迹C++primer】59、模板左值右值的转换

模板左值右值的转换 /** * 功能:模板左值右值的转换 * 时间:2014年7月27日08:18:06 * 作者:cutter_point */ #include<iostream> #include<algorithm> #include<utility> using namespace std; template<typename It> auto fcn(It beg, It end) -> typename remove_reference&

【足迹C++primer】57、定义一个模板

定义一个模板 比较大小的函数如果v1和v2相同返回0,v1小-1,v2小1 int compare(const string &v1, const string &v2) { if(v1<v2) return -1; if(v1>v2) return 1; return 0; } int compare(const double &v1, const double &v2) { if(v1<v2) return -1; if(v1>v2) retur

C++ Primer 学习笔记_86_模板与泛型编程 --重载与函数模板

模板与泛型编程 --重载与函数模板 引言: 函数模板可以重载:可以定义有相同名字但参数数目或类型不同的多个函数模板,也可以定义与函数模板有相同名字的普通非模板函数. 但是,声明一组重载函数模板不保证可以成功调用它们,重载的函数模板可能会导致二义性. 一.函数匹配与函数模板 如果重载函数中既有普通函数又有函数模板,确定函数调用的步骤如下: 1.为这个函数名建立候选函数集合,包括: a.与被调用函数名字相同的任意普通函数. b.任意函数模板实例化,在其中,模板实参推断发现了与调用中所用函数实参相匹配

C++ Primer 学习笔记_75_模板与泛型编程 --模板定义

模板与泛型编程 --模板定义 引言: 所谓泛型程序就是以独立于不论什么特定类型的方式编写代码.使用泛型程序时,我们须要提供详细程序实例所操作的类型或值. 模板是泛型编程的基础.使用模板时能够无须了解模板的定义. 泛型编程与面向对象编程一样,都依赖于某种形式的多态性.面向对象编程中的多态性在执行时应用于存在继承关系的类.我们能够编写使用这些类的代码,忽略基类与派生类之间类型上的差异.仅仅要使用基类的引用或指针,基类类型或派生类类型的对象就能够使用同样的代码. 在泛型编程中,我们所编写的类和函数能够

C++ Primer 学习笔记_84_模板与泛型编程 --模板特化

模板与泛型编程 --模板特化 引言: 我们并不总是能够写出对全部可能被实例化的类型都最合适的模板.某些情况下,通用模板定义对于某个类型可能是全然错误的,通用模板定义或许不能编译或者做错误的事情;另外一些情况下,能够利用关于类型的一些特殊知识,编写比从模板实例化来的函数更有效率的函数. compare函数和 Queue类都是这一问题的好样例:与C风格字符串一起使用进,它们都不能正确工作. compare函数模板: template <typename Type> int compare(cons

C++ Primer 学习笔记_83_模板与泛型编程 --一个泛型句柄类

模板与泛型编程 --一个泛型句柄类 引言: [小心地雷] 这个例子体现了C++相当复杂的语言应用,理解它需要很好地理解继承和模板.在熟悉了这些特性之后再研究这个例子也许会帮助.另一方面,这个例子还能很好地测试你对这些特性的理解程度. 前面示例的Sales_item和Query两个类的使用计数的实现是相同的.这类问题非常适合于泛型编程:可以定义类模板管理指针和进行使用计数.原本不相关的Sales_item类型和 Query类型,可通过使用该模板进行公共的使用计数工作而得以简化.至于是公开还是隐藏下

【足迹C++primer】37、关联容器概述

关联容器概述 关联容器不支持顺序容器的位置操作,如push_back或push_front 也不支持构造函数或插入操作这些接受一个元素值和一个数量值的操作. 定义关联容器 这里注意哦,我这是一个函数,里面关联容器map是包含在头文件map中的!!! 还有就是set是包含在头文件set中的,string是包含在头文件string中的!!! //关联容器初始化 void fun1() { map<string, size_t> word_count; //空容器 //列表初始化 set<st

【C++ Primer】重载操作符与转换

十四.重载操作符与转换 1. 重载操作符的定义 重载操作符必须具有至少一个类类型或枚举类型的操作数,这条规则强制重载操作符不能重新定义用于内置类型对象的操作符含义. int operator +(int, int) // 错误,内置数据类型不能重载操作符 重载操作符,操作符的优先级.结合性或操作数数目不能改变.重载操作符并不保证操作数的求值顺序,不再具备短路求值特性,因此,重载&&.||.逗号操作符不是一种好的做法.除了函数调用操作符 operator()外,重载操作符时使用默认实参是非法

【足迹C++primer】58、Template Parameter

Template Parameter #include<iostream> #include<algorithm> #include<memory> #include<list> #include<fstream> #include<string> using namespace std; template<typename Foo> Foo calc(const Foo &a, const Foo &b)