OJ-类模版

有一种类,海纳百川,可以对任意类型的数据进行存取,造就这个传奇的,就是模板。

下面的程序中,定义一个类模板,但其中有些成份漏掉了,请你将他们补足,使程序能正确运行,得到要求的输出结果。

Input

一个整数和一个小数,将通过putElem函数存于相应的对象实例中

Output

通过getElem()取出相应对象中存入的数据,并且输出,浮点型保留两位小数

Sample Input

240 56.7183

Sample Output

240

56.72

//************* begin *****************
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
template <class T >//类模板,实现对任意类型数据进行存取
class Store
{
private:
    T item;        //用于存放任意类型的数据
    int haveValue;  //用于标记item是否为空,0表示为空,1表示有数据
public:
    Store();          //默认构造构造函数
    T getElem();      //提取数据,返回item的值
    void putElem(T x);//存入数据
};
template<class T>//默认构造构造函数的实现
Store<T>::Store(void):haveValue(0){};
template<class T>   //提取数据函数的实现,返回item中的数据
T Store<T>::getElem(void)
{
    if (haveValue==0) //如果试图提取未初始化的数据,则终止程序
    {
        cout<<"NO item present!\n";
        exit(1);
    }
    return item;
}
template<class T>//存入数据的实现
void Store<T>::putElem(T x)
{
    haveValue=1;
    item = x;
}
//************* end *****************
int main()
{
    Store<int> si;
    Store<double> sd;
    int i;
    double d;
    cin>>i>>d;
    si.putElem(i);
    sd.putElem(d);
    cout <<setiosflags(ios::fixed)<<setprecision(2);
    cout<<si.getElem()<<endl;
    cout<<sd.getElem()<<endl;
    return 0;
}

!!每一个函数前面要加上

template <class T >

切记切记。

@ Mayuko

时间: 2024-08-04 05:32:02

OJ-类模版的相关文章

C++ 类模板三(类模版中的static关键字)

//类模版中的static关键字 #include<iostream> using namespace std; /* 类模板本质上是c++编译器根据类型参数创建了不同的类, c++编译器在利用类模板生成类的时候会为每个类生成一个static变量 那么对于类中的static关键字就非常好理解了 static关键字修饰的变量是属于类的 同一个类的对象共享类的static静态变量 类模板中的static修饰的变量数据类型必须是确定的 不可以是类型参数 因为静态变量在类对象之前初始化 这时候还没有通

C++ 类模板二(类模版与友元函数)

//类模版与友元函数 #include<iostream> using namespace std; template<typename T> class Complex{ public: Complex(T a,T b); void Print() const//const修饰的是this指针 { cout << this->Real << ":" <<this->Image<< endl; } /*

浅析在类模版中构建成员函数时,使用memcpy产生的副作用

一般情况下我们在对类模版中的成员函数进行构建时会经常对一些数据进行复制拷贝,而通常情况下我们都不提倡用memcpy进行拷贝,因为在类模版中所传进来的类型可以是内置类型也可以是非内置类型,除非你在成员函数中使用memcpy前进行类型萃取,否则它所带来的副作用的后果也是很可怕的.memcpy在对内置类型可正常拷贝,而在对非内置类型拷贝时会出现浅拷贝的现象. 下面我们可以通过一个简单的顺序表程序来分析memcpy对非内置类型所产生的副作用: #include<iostream> #include&l

初探C++类模版学习笔记

类模板 实现:在定义类的时候给它一个或多个参数,这个些参数表示不同的数据类型.                              -->抽象的类. 在调用类模板时, 指定参数, 由编译系统根据参数提供的数据类型自动产生相应的模板类                   -->具体的类. 类模板的定义 C++的类模板的写法如下: template <类型参数表> //类型参数表的写法就是:class 类型参数1, class 类型参数2, - class 类模板名 { 成员函数

spring jdbc查询 依赖JdbcTemplate这个类模版封装JDBC的操作

1 package cn.itcast.spring.jdbc; 2 3 import java.util.List; 4 5 import org.springframework.jdbc.core.support.JdbcDaoSupport; 6 7 public class PersonDao extends JdbcDaoSupport{ 8 public void update(){ 9 this.getJdbcTemplate().execute("update person se

c++ 类模版、成员函数模版、函数模版 用法

C++函数模版与类模版. template <class T> void SwapFunction(T &first, T &second){ }//函数模版 template <class T>//类模版 class CTemplate{ public: void SWap(T &first, T &second){ } }; #include <iostream> class Single{ public: static Single

类模版静态成员初始化

首先看代码,静态数据成员分为两种情况,第一种不依赖模版类型参数,第二种依赖模版类型参数. template <typename T> class TestTemStatic { public: static int knownTypeVar; static T unKnownTypeVar; }; 那么如何初始化呢? 对于第一种存在两种初始化方式: template <> int TestTemStatic<int/* any other type */>::known

3.1.2 函数模版与类模版

一.函数模版 比较两个数的大小. 代码: #include <iostream> using namespace std; template <typename T> inline int myCompare(const T &a, const T &b) { if(a > b) return 1; else if(a < b) return -1; else return 0; } int main() { cout << myCompar

类模版的注意事项

demo 1 #include <iostream> #include <cstdio> using namespace std; // 模板类 template <typename T> class A { public: A(T a = 0) { this->a = a; } void printA() { cout << "a: " << a << endl; } private: T a; }; //

类模版的默认类型参数

You can assign a default type for a type parameter in a class template. (可以为类模板 的类型参数指定一个默认类型) You can only use default type in class templates, NOT in function templates