C++中类模板怎样实例化对象是类类型 给个简单的例子说明一下!!

C++中类模板怎样实例化对象是类类型 给个简单的例子说明一下!!,第1张

template <class T1=int , class T2=float>

class MyData

{

public :

MyData(T1 a = 0);

MyData(T1 a , T2 b );

MyData(T1 a , T1 b ,T1 c) ;

~MyData

private :

};

void main()

{

MyData<int , float> obj2(4, -2,8);

MyData<double > obj3(79,62,-52);

MyData<MyData<float> > obj4(88,77,66);

/ 首先 > > 之间一定要有一个空格,使编译器能正确理解,

其次 obj4(88,77,66) 对象首先 调用MyData(float a , float b ,float c) 构造函数进行隐式类型转换将(88,77,66)转换成 MyData<float>类型 对象 , 再调用

MyData(MyData<float> a = 0) 构造函数 生成 obj4 ;/

}

一、各个模块

1、将数组转换为指针

2、定义初始模板类型

1)元素类型为T

2)容器类型为T

3)是否为字符数组类型:否

4)数组大小:0

3、定义字符数组类型

1)元素类型为char

2)容器类型为std::string

3)是否为字符数组类型:是

4)数组大小:N

4、定义字符指针类型

1)元素类型为char

2)容器类型为std::string

3)是否为字符数组类型:是

4)数组大小:0

5、定义非字符类型数组

1)元素类型为T

2)容器类型为std::vector

3)是否为字符数组类型:否

6、定义初始化列表类型

1)元素类型为T

2)容器类型为std::vector

3)是否为字符数组类型:否

7、定义各种类型

1)是否为字符数组类型

2)获取字符数组的大小

3)获取字符数组的类型,char or wchar_t

4)获取容器类型

8、创建自定义元组

创建元组的时候,元组的元素可以是元组,可以使vector,也可以是各种基础类型元素。

9、获取自定义元组中的元素

分别可以获取一层元组的元素、两层元组的元素、三层元组的元素。

二、整体代码

else

if

(i==2)

后面这一大段需要用花括号括起来哦。不然if的执行体只有vector<int>

vessel;这一句了

#include<iostream>

#include<vector>

#include<cctype>

#include<cstddef>

#include<iterator>

using

namespace

std;

int

main()

{

const

size_t

array_size=10;

int

a[array_size],b[array_size],i;

cout<<"Please

enter

1

to

use

array

style

or

enter

2

to

use

vector

style!";

cin>>i;

if(i==1)

{

cout<<"Please

enter

ten

integers

to

initialization

the

a[]"<<endl;

for(size_t

index=0;index!=array_size;index++)

{

cin>>a[index];

b[index]=a[index];

}

for(size_t

ix=0;ix!=array_size;ix++)

cout<<b[ix]<<"

";

cout<<endl;

}

//===========================================================================================================================

else

if(i==2)

{

vector<int>

vessel;

int

integer;

cout<<"Please

enter

the

array

elements:"<<endl;

for(vector<int>::size_type

index=0;index!=array_size;index++)

{

cin>>integer;

vesselpush_back(integer);

}

for(vector<int>::iterator

iter=vesselbegin();iter!=vesselend();iter++)

{

cout<<iter<<"

";

cout<<endl;

}

}

return

0;

}

二楼说的只能在类模板中才能用。

我尝试过这种方法,先声明一个基类,其他类在其基础上进行派生:

class CCtrlBase

{

public:

// Constructor/Deconstructor

CCtrlBase(CCtrlBase ptr=NULL);         // 构建函数的ptr用于填写其派生类的对象指针,从而允许反向调用和访问

virtual ~CCtrlBase();

// Attributes

// 下列变量由基类和派生类的构建函数设置,用于为每个对象的信息维护提供支持

// 由对象的构建函数自动调用基类构建函数设置或其管理对象调用本对象的SetCallBack

private:

CCtrlBase          pParent;            // 管理本对象的对象的指针,由维护或管理该对象的对象在创建此对象时设置

protected:

static bool bRunOnce    ;

static int          m_process_id;       // 进程号,将作为CEmulator的m_object_index。

static int          m_object_num;       // 维护进程所创建的所有CCtrlBase对象总数

CLASS_ID            class_id_;          // 基类和派生类的类型标识

CString             class_name_;        // 基类和派生类的类型名

int                 m_object_index;     // 对象的索引值;对于无管理对象的独立对象该值由基类构建函数维护,否则由管理对象维护

public:

// Implementations

private:

protected:

int              GetSize(voidp);      // 根据内存指针计算临时内存分配的空间大小(bytes)。

CString          GetClassName();       // 用于获取当前对象的类名字串

CUDPSocket      GetUDPSocketPtr();    // 根据ptrClass指针获得Node实例指针,注意ptrClass的ClassID class_id_必须是_CNode

public:

CLASS_ID  GetClassID();// 用于获取当前对象的类名属性值(枚举类型标识)

int       SetObjID();// 用于设置ptr对象的m_object_index,当ptr为NULL时,设置为自动累加的值,否则设为其派生类或管理类中的列表索引值

int       GetObjID();// 用于查询并ptr对象的m_object_index,当ptr为NULL时,返回其派生类或管理类中的m_object_index,否则返回该对象在派生类或管理类的列表索引值,实际上通过调用其派生类或管理类的该函数以获取该值。

CCtrlBaseGetParentPtr();// 返回其管理类对象的指针,即控制者指针

void      SetCallBack(CCtrlBase ptr, bool bReplace=true);  

/

// 调用方法:pObj->SetCallBack(this)

// 用于指定使用本对象的管理者类函数的实例对象指针。

/

}

第一种方法意味着在使用模板的转换文件中不但要包含模板声明文件,还要包含模板定义文件。在上例中,就是第一个示例,在arrayh中用行内函数定义了所有的成员函数。或者在maincpp文件中也包含进arraycpp文件。这样编译器就能看到模板的声明和定义,并由此生成array<int, 50>实例。这样做的缺点是编译文件会变得很大,显然要降低编译和链接速度。

第二种方法,通过显式的模板实例化得到类型。最好将所有的显式实例化过程安放在另外的文件中。在本例中,可以创建一个新文件templateinstantiationscpp:

// templateinstantiationscpp

#include "arraycpp"

template class array <int, 50>; // 显式实例化

现代建筑施工中使用的模板种类繁多,具体使用哪种模板要根据施工工程的特点和要求进行选择。以下是一些常见的模板类型:

钢模板:钢模板是一种高强度的模板,适用于大型工程和高层建筑的施工。钢模板的优点是强度高、重复使用次数多,适用于长周期工程。不过由于成本较高,价格一般在几千到万元不等。

木质模板:木质模板是一种常见的模板,适用于一般性建筑施工。木质模板的成本相对较低,一般在几百到千元不等。

胶合板模板:胶合板模板是一种高强度、防水、耐用的模板,适用于湿度大的场合。价格一般在千元左右。

塑料模板:塑料模板是一种轻便、防水、易拆卸的模板,适用于短周期工程。价格相对较低,一般在几十到几百元不等。

需要注意的是,具体的模板价格还与品牌、规格等因素有关,价格区间也有一定的浮动。因此在选择模板时,需要根据工程要求、施工周期、预算等因素进行综合考虑。

按时间分有年度总结、半年总结、季度总结。进行某项重大任务时,还要分期总结或叫阶段总结。

按范围分,有单位总结、个人总结、综合性总结、专题总结等。

按性质分,有工作、生产、教学、科研总结等。

办公资源里面的模板素材十分丰富,场景和风格分类也有很多,可以参考看看。

以上就是关于C++中类模板怎样实例化对象是类类型 给个简单的例子说明一下!!全部的内容,包括:C++中类模板怎样实例化对象是类类型 给个简单的例子说明一下!!、C++模板编程 自定义创建元组(tuple)、C++关于类模板类型和数组的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/10138560.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存