#include<iostream.h>
#include<string.h>
class string{
private :
char * str;
public :
string(){
str = new char[];
}
string(char * ch){
str = new char[strlen(ch) + 1];
strcpy(str, ch);
}
void display();
~string(){
delete this->str;
}
};
void string :: display(){
cout << "class string's member str'value is " << this->str << endl;
}
调用方式一:
template <class T>
void print(T t){
t->display();
}
int main(){
string s1("tester");
print(&s1);
return 0;
}
调用方式二:
template <class T>
void print(T &t){
t.display();
}
int main(){
string s1("tester");
print(s1);
return 0;
}
调用方式三:
template <class T>
void print(T t){
t.display();
}
int main(){
string s1("tester");
print(s1);
return 0;
}
分析:
调用方式三运行时会出错,原因在于方式三是值传递调用,当调用print方法时会首先调用string(char * ch)实例化一个string对象,即t和s1是两个不同的string对象;方式二和方式一是引用传递,因此t和s1是同一个string对象,方式一传递的是指针,方式二传递的是引用;函数模板在使用时,class后面的类型参数必须实例化
分享到:
相关推荐
### C++函数模板详解应用 在C++编程中,函数模板是实现代码重用和泛型编程的关键技术之一。本文将详细介绍C++函数模板的基本概念、语法特点以及一些高级用法,帮助读者深入理解并掌握函数模板的应用。 #### 一、...
谭浩强老师c++课本函数模板例题,c++函数模板使用,供大家学习使用。
冒泡排序算法的C++函数模板 冒泡排序算法是简单的排序算法之一,它的主要思想是通过反复比较相邻元素,将小的元素逐步移到序列的开始位置,而大的元素逐步移到序列的末尾位置,以达到排序的目的。下面是冒泡排序...
其中,template为关键字,表示定义一个模板(可以是函数模板或类模板),尖括号表示模板参数,模板类型参数使用关键字class或typename开始,其后是一个用户定义的合法的标识符。 如果用户在调用函数模板时显式标识...
对C++函数模板的代码实现对C++类模板的代码实现对C++类模板继承的代码实现代码对应的文章:https://blog.csdn.net/ChuJian_cao/article/details/134779209
c++函数模板的运用案例
c++函数模板解释.md
本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解。具体内容如下: 泛型编程(Generic Programming)是一种编程范式,通过将类型参数化来实现在同一份代码上...
C++函数模板是C++语言中一种用于生成通用函数的机制,它的核心思想在于允许程序员编写与数据类型无关的代码。使用函数模板可以避免针对每一种数据类型编写相似的代码,从而提高代码的可重用性和简洁性。在C++中,...
模板,函数 ,两数 ,大小, C++ ,程序, 比较大小, 程序源码 ,主函数, cpp
C++中有关模板的试题题型练习题是C++模板类型题型的综合应用,涵盖了函数模板、类模板的设计方法和实现。下面对标题、描述、标签和部分内容进行详细的解释和分析。 一、函数模板设计 函数模板是C++模板技术的核心...
"详解C++函数模板与分离编译模式" C++函数模板是一种非常强大的功能,它允许开发者编写通用的代码,使得程序更加灵活和可重用。然而,在使用函数模板时,需要注意分离编译模式下的问题。在此文章中,我们将详解C++...
函数模板是C++中的另一个高级特性,它允许我们编写泛化的函数,可以应用于多种数据类型。模板的定义如下: ```cpp template void print(T num) { cout 任意类型: " ; } ``` 这里的`T`是一个类型参数,代表任何...
函数模板 建立一个通用的函数,函数类型和形参不具体指定,用一个虚拟的类型代表。 只要是函数体是相同的就可以用这个模板代替。 (只适用于函数的参数个数相同而类型不同,且函数体一致的情况,如果参数个数不同,则...
本文将深入探讨如何使用C++函数模板来求解不同数据类型的极值,以此为基础,我们将分析给定的实例004——使用函数模板实现不同数据类型的极值函数。 函数模板的基本概念是,它是一个未特化的函数定义,可以在编译时...
C++提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类,其类内部的类型和函数的形参类型不具体指定,用一个虚拟的类型来代表。这种通用的方式称为模板。模板是泛型编程的基础,泛型编程即以一...
C++函数重载、函数模板、类模板 C++函数重载是指在同一个作用域内,允许多个函数具有相同的函数名,但具有不同的参数列表。函数重载的优点是方便使用和记忆。例如: int add(int x, int y); float add(float x, ...
编译环境: Windows 7 Service Pack 1 C++ Builder 代码参考: 余文溪的《C++ STL --数据结构与算法实现》原书代码为控制台。 这里用 C++ Builder代码演示