定义一个函数c 模板函数 的 定义,实现两个T类型的对象相减,定义Matrix类型,表示2行2

The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.利用模板类定义一个m * n的矩阵类怎么做
写出一套MC模拟的C++函数库,完成以下功能:1) 随机数产生的类RndGen2) 派生两种以上的类,分别实现两种以上的随机数产生子算法3) 写出随机数产生子的测试程序,并给算法性能比较这东西不会啊!
09-12-27 &匿名提问
您好            1. 准备工作&br&在安装Word 2000时,选择“自定义安装”中Office工具里的公式编辑器“Microsoft 公式 3.0”。 启动Word 2000后,用鼠标单击“插入”菜单,选择“对象”,在“对象类型”中选取“Microsoft 公式 3.0”,并双击它即可启动。这时屏幕上出现编辑框、公式窗口等栏目。在编辑框中的光标闪动处可以输入数学、化学的各种符号和公式,并且编辑框能随输入公 式的长短而变化。在公式窗口中,几乎包括了所有的数学符号,例如:关系符号、运算符号、修饰符号、逻辑符号、集合符号、箭头符号、希腊字母(大小写)符 号、分式和根式模板、上下标模板、矩阵模板、求和模板、积分模板、底线和顶线模板等,利用公式中的各种符号和模板能编辑排版各式各样的表达式。&br&&br&2. 数学公式&br&I. 矩阵的输入:&sub&&/sub&&br&在公式栏中选定“围栏模板”,在围栏模板中嵌入“矩阵模板”,移动光标,输入“1、4、7、2、5、8、3、6、9”即可&br&&br&II. 极限的输入:&br&在公式栏中选定“上下标模板”中的“上标、下标模板”,在上标框中输入“lim”,在下标框中输入“x&sub&&/sub&-&0”;把光标移到右边,选择“分式模板”,在上标框和下标框中分别输入“sinx”和“x”,最后输入“=1”即可&br&&br&III. 方程式的输入:&br&先在公式编辑框中输入“y=”,然后选择“分式和根式模板”中的“分式模板”,输入“x”,再选取“上下标模板”中的“上标模板”,在上标模板中嵌入“分 式模板”,在分子分母中分别输入“1”、“2”后,将光标移到右边,输入“-”;选取“根式模板”中的“多次根式”,在根指数中输入“3”,在根号里用上下标模板的方法输入含有指数的多项式;最后用类似的方法输入带根号的多项式即可。&br&&br&IV. 级数的输入:&br&在公式栏中选定“求和模板”,在“求和模板”的上标框中输入“无限大符合”,下标框中输入“n=1”;把光标移到右边的输入框,选择分式模板、级数模板、根式模板,分别输入相应的字母和数字即可。&br&&br&V. 积分的输入:&br&在公式栏中选定“积分模板”,输入“&sub&&/sub&积分符号”;把光标移到右边,选择“围栏模板”、“分式模板”、“根式模板”、“上标模板”,分别输入相应的字母和数字即可。&br&&br&3. 化学表达式&br&I. 化学元素:&br&元素化合价、同位素原子符号,在公式选项中选取“上下标模板”,输入即可。&br&&br&II. 文字公式:&br&选取“分式模板”,输入相应的文字和数字;选取“运算符模板”,输入“百分比”。&br&&br&III.化学方程式:&br&在编辑框中输入“2KCLO”,选取“下标模板”,输入“3”,再选取“上下标模板”,在上标框中嵌入“双底线模板”,输入“MnO&sub&2&/sub&”,在下标框中嵌入“希腊字母模板”,输入“加热符号&sub&&/sub&”,并用Ctrl+右移箭头,移动位置,使其美观;把光标移到右边,输入“2KCL+3O”,选取“下标模板”和“箭头模板”,分别输入“2”和“气体挥发符号&sub&&/sub&”即可。
请登录后再发表评论!
我说一说,要是说错了,不要见怪.(1)在头文件处用using namespace std不是个好注意,这样的话别人包含你的文件就直接用了std了.(2)头文件应该用#ifndef #define #endif,避免重复包含.(3)定义类的时候,尽量将重要的函数放在前面,容易引起注意.而通常构造函数和析构函数是最重要的,放在前面比较合适(4)CMatrix();这个构造函数没有意义,应该删除,因为用了这函数你定义的只是0行0列的数组.(5)CMatrix( int m, int n, double *p);这个构造函数也有错误,当p包含的元素少于m*n时候,会越界.(6)建议构造函数为CMatrix(int m, int n, double p = 0.0); 应该要求明确的给出行数和列数.(7)建议用模板类,因为不单单是double类型需要矩阵.用模板会通用些.(8)请将函数用空格进行分类,这样会容易看些.比如+,-,*应该和其他函数定义分开一下.并将会改变类数据的函数放在前面,不会改变类的放在后面.(9)不用每个地方都加注释,注释多了反而让人心烦.(10)+,-,*的操作建议定义成friend,比如friend CMatrix operator+(const CMatrix& lhs, const CMatrix& rhs); 这样操作数可以在左边和右边.(11)可以写一个关于[][]之类的操作符号重载,符合平时的习惯.具体实现可以在类里面定义个代理.这样就double getElement(int m,int n) bool setElement(int m, int n, double a);就变成一个函数.(12)有了&&重载, void printMatrix()不是必要的,去掉.成员函数越少越好.(13)==, != 的重载请用bool类型.(14)求逆和行列式所用的算法效率太低.建议改成矩阵变换的方法.好象挑了很都毛病,不过开始是这样的啦.不要灰心哦.
请登录后再发表评论!
可以,把第二个类也定义成模板,模板参数给第一个类;或者要定义的成员使用具体化参数的模板类。template&typename T& class AT{...};template&typename T& class BT { AT&T& m_a; };class C { AT&float& m_ };
请登录后再发表评论!The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.如同函数模板一样,使用类模板使用户可以为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值能取任意类型。类模板是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。
 定义类模板的一般形式是:
 template &类型名 参数名1,类型名参数名2,…&
 class 类名
  类声明体
 例如,template &class T&
 class Smemory
  public:
  void mput(T x);
 表示定义一个名为Smemory的类模板,其中带类型参数T。
在类模板的外部定义类成员函数的一般形式是:
 template &类型名 参数名1,类型名参数名2,…&
 函数返回值类型 类名&参数名 1 参数名 2,…&::成员函数名(形参表)
  函数体
 例如:template &class T&
  void Smemory&T&::mput(T x)
  表示定义一个类模板Smemory的成员函数,函数名为mput,形参x的类型是T,函数无返回值。
  类模板是一个类家族的抽象,它只是对类的描述,编译程序不为类模板(包括成员函数定义)创建程序代码,但是通过对类模板的实例化可以生成一个具体的类以及该具体类的对象。
与函数模板不同的是:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定,
其实例化的一般形式是:
  类名 &数据类型 1(或数据),数据类型 2(或数据)…& 对象名
 例如,Smemory&int& mol;
  表示将类模板Smemory的类型参数T全部替换成int 型,从而创建一个具体的类,并生成该具体类的一个对象mol。
下面举例说明类模板的定义和使用方法。
  例9.3.1:类模板的定义和使用。
 #include &iostream.h&
 #include &conio.h&
 const int SIZE=8;
 template &class T&
 class Smemory { //定义类模板Smemory
    T data[SIZE]; //类型为T,长度为SIZE的数组data[]为数据成员
    public:
    Smemory( ){ count=0; }
    void mput(T x); //mput()函数的参数x的类型是T
    T mget( ); //声明返回值类型为T的成员函数mget()
 template &class T&
 void Smemory&T&::mput(T x) //定义成员函数mput(),函数的参数类型为T,该函数用于为数据成员 data数组的各个元素赋值
    if(count==8) { cout&&&Memory is full&; }
    data[count]=x;
    count++;
 template &class T&
 T Smemory&T&::mget( )  //定义成员函数mget(),函数的返回类型为T,该函数用于取出数据成员 data数组的各个元素
    if(count==0) { cout&&&Memory is empty&; return 0; }
    count--;
    return data[count];
void main( )
  Smemory&int& mo1;
char ch='A';//将Smemory实例化,并创建对象mo1
   Smemory&char& mo2; //将Smemory实例化,并创建对象mo2
   for(i=0; i&8;i++)
    mo1.mput(i);          //调用成员函数mput()
    mo2.mput(ch); ch++; //调用成员函数mput()
   cout&&&Get mo1 =& &;
   for(i=0;i&8;i++)
   cout&&mo1.mget( );        //调用成员函数mget()
   cout&&&\nGet mo2 =& &;
   for(i=0;i&8;i++)
   cout&&mo2.mget( ); //调用成员函数mget()
   getch();
  程序的运行结果是:
 Get mo1=&
 Get mo2=& HGFEDCBA
说明:类模板Smemory带一个类型参数T,T是代表数据类型的参数,在类型参数前面必须加关键字class,用class表示类型参数的类型。在实例化时,对应类型参数T必须是具体的数据类型名,这里建立第一个对象时数据类型名是int,表示将类模板Smemory中的所有类型参数T都替换成int型, 从而创建一个具体的类及其对象mo1;在建立第二个对象时数据类型名是char,表示将模板Smemory中的所有类型参数T都替换成char,从而创建一个具体的类及其对象mo2。
本文已收录于以下专栏:
相关文章推荐
大家好,昨天,
在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用。下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误。 这几个词是: 函数指针——指针函数 数组指...
模板(template)是一个将数据类型参数化的工具。模板分为函数模板和类模板两种。
在定义模板的时候不说明某些函数参数或者数据成员的类型,而将它们的数据类型作为模板参数。在使用模板时根据实参的...
常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及B...
在前面的几章,我们已经
一、类模板
类模板是后期C++加入的一种可以大大提高编程效率的方法
关键字template
     //....
二、举个栗子
我们要写一个比较...
有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:class Compare_int { public : Compare(int a,int b) { x=a; y=...
1、模板的概念
我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需...
类模板与函数模板的定义和使用类似,我们已经进行了介绍,如果您对函数模板也感兴趣,请查看:。
有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:
class Com...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 函数模板已定义 的文章

 

随机推荐