移动学习网 导航

c++关于模板类函数返回值 关于c++模板函数返回值的问题

2024-05-22m.verywind.com
关于C++函数模板定义时候的返回类型问题~

在模板里, 你可以抽象地把typename理解为一种数据类型(它应该是算成静态的数据类型)
你在template中定义的是typename 1和2, 没有T, 所以fun(T a , T b)就肯定是错的, 因为你定的是1和2, 就没有T的事.

这个和重载差不多, 只是说重载是对于不同参数进行不同的操作, 这个是对于不同的数据类型, 进行相同的操作, 但是这样, 模板也是可以减少许多不必要的代码书写.
正确写法是:
template
_1 fun (_1 a, _2 b)
{
......
return a;

}

C++ 11 还不支持 模板函数返回值 类型自动推导,新的标准可能会支持,目前主流的 编译器 应该都不支持。
此处可使用:
templateA plus(A a,A b){ return a+b;}

请问你要返回哪个类的对象?返回什么类型就写什么就行了,以下写法都是可以的:

#include <iostream>
#include <cstdlib>
using namespace std;

template <class T>
class Car{
public:
Car<T> show()
{
cout<<"show"<<endl;
Car<T> a;
return a;
}
};

int main()
{
Car<int> intCar;
intCar.show();
system("pause");
return 0;
}

好像在类里<T>都可以省略,我在Dev-Cpp 4.9.9.2和Visual Studio 2012里都编译过了,如下:

	Car show()
{
cout<<"show"<<endl;
Car a;
return a;
}

但我觉得如果仅写Car只是一种省略后的结果,本来Car是一个模板,Car<T>才是一个类。


答案补充:甚至这样都是可以的,返回的是一个其它类模板生成的类:

template <class T>
class Bus{
};

template <class T>
class Car{
public:
Bus<T> show()//返回的是一个Bus类模板生成的类Bus<T>。这个时候再简写成Bus show()就要报错了
{
cout<<"show"<<endl;
Bus<T> a;
return a;
}
};

总之就是想要返回什么就写什么就行了。


如果没讲到你想知道的,就把问题写清楚点继续追问。



  C++ 11 还不支持 模板函数返回值 类型自动推导,新的标准可能会支持,目前主流的 编译器 应该都不支持。
  此处可使用:
  template<class A>
  A plus(A a,A b)
  {
  return a+b;
  }

c++:
  C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。最新正式标准C++14于2014年8月18日公布。[1] 其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性。

很明显,书中有点错误,按原意XXX应该写Car
当然,如果你想返回其他类型,比如int,你也可以用int来代替
还有不明白请追问..好的话赞一个吧

  • c语言中调用函数如何返回多个值?
  • 答:1、通过使用指针,在函数调用时,传递带有地址的参数,并使用指针更改其值;这样,修改后的值就会变成原始参数。2、通过使用指针返回结果为:3、通过使用结构:因为结构是用户定义的数据类型;可以定义一个包含两个整数变量的结构,并将更大和更小的值存储到这些变量中,然后使用该结构的值。4、通过使用...

  • 关于C语言函数返回值的问题,请大神帮帮忙
  • 答:int n2(Bitree bt)函数,返回值是int型,而你的函数体内,有5个if的条件判断语句,那么试想如果if的条件判断全都不满足,即全都为假的时候,那么一个if都不会执行。所以if语句里的return语句能执行到吗?当然不行了!因此你应该在int n2(Bitree bt)体的尾部加一句return语句,比如你想默认是返回...

  • C语言 返回值是干什么用的
  • 答:函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果会通过return语句返回。函数可以有返回值,也可以没有返回值。对于没有返回值的函数,功能只是完成一个操作,应将返回值类型定义为void,函数体内可以没有return语句,当需要在程序指定位置退出时,可以在该处放置一个。

  • C语言中的main()函数返回值是什么?
  • 答:void main()表示无返回值,就是说在程序尾不需要加return 0;void main(void)与上述是相同的,只是更严密而已。在java/C/C++中,main为程序运行的主入口方法,每个程序只有一个,也就是所有程序建立在卖弄函数的基础之上。

  • c语言 有参有返回值函数 1..为什么要使用函数?2.函数分哪些类型3.函数...
  • 答:可以这样说,如果超过100行的程序中没有使用函数,那么这个程序一定很罗嗦(有些绝对,但也是事实)。一、函数的定义 一个函数包括函数头和语句体两部分。函数头由下列三不分组成:函数返回值类型 函数名 参数表 一个完整的函数应该是这样的:函数返回值类型 函数名(参数表){ 语句体;} 函数返回值类型...

  • C语言中函数调用与返回值的关系是什么
  • 答:所谓函数返回值是一个函数在运算结束以后向调用它的母函数或者系统反馈一个值,这个值可以是各种变量类型.举个简单的例子:int add(int a,int b){ return (a+b);} int main(){ int res;res=add(3,4);printf("%d",res);return 0;} 在主函数main中调用子函数add,并传递参数3和4过去,add...

  • C语言pow函数返回值是什么类型的?
  • 答:C/C++中的数学函数 原型:在TC2.0中原型为externfloatpow(floatx,floaty);,而在VC6.0中原型为doublepow(doublex,doubley);头文件:math.h/cmath(C++中)功能:计算x的y次幂。返回值:x不能为负数且y为小数,或者x为0且y小于等于0,返回幂指数的结果。返回类型:double型,int,float会给与警告。

  • C语言pow函数返回值是什么型的
  • 答:pow的返回值为double类型。pow是C语言库函数中的数学函数之一,其声明为 double pow(double n, double r);声明与math.h。其功能为求n的r次幂,并作为返回值返回。

  • 我想知道C语言返回类型函数,如果没有返回值,程序中没有return,那么函数...
  • 答:如果函数有返回值,函数名前面一定相关的数据类型,不返回任何数据时,则需在函数名前冠以void关键字。如果什么都没有(不推荐),则系统默认返回int类型。在函数中,对于有返回值的函数,关键字后面必有与函数名前相同类型的数据(默认转换也可以),如果不加返回的变量或常量,会编译错误。

  • C语言中函数返回值为int和返回值为int&这两种情况没什么不同啊!_百度...
  • 答:函数返回int&只有C++才有,C是没有的。你说的问题“确实如此”,“没有区别”。因为int&是引用,只是一个同类型变量的别名,并不是什么地址。所以从“值的使用角度”看,返回int和返回int&是一样的。但是,引用与普通变量还是有区别的,特别是C++中有些函数的形式参数要求就是引用而不是变量,当...

    户户网菜鸟学习
    联系邮箱
    返回顶部
    移动学习网