c關於類函式返回值c關於模板類函式返回值

2021-03-19 18:36:14 字數 2985 閱讀 8782

1樓:風雷雪電

請問你要返回哪個類的物件?返回什麼型別就寫什麼就行了,以下寫法都是可以的:

#include

#include

using namespace std;

template

class car

};int main()

好像在類裡都可以省略,我在dev-cpp 4.9.9.2和visual studio 2012裡都編譯過了,如下:

car show()

;template

class car

};總之就是想要返回什麼就寫什麼就行了。

如果沒講到你想知道的,就把問題寫清楚點繼續追問。

2樓:

很明顯,書中有點錯誤,按原意***應該寫car

當然,如果你想返回其他型別,比如int,你也可以用int來代替

還有不明白請追問..好的話贊一個吧

3樓:東哥

c++ 11 還不支援

模板函式返回值 型別自動推導,新的標準可能會支援,目前主流的 編譯器 應該都不支援。

此處可使用:

template

a plus(a a,a b)

c++:

c++是在c語言的基礎上開發的一種物件導向程式語言,應用廣泛。c++支援多種程式設計正規化 --物件導向程式設計、泛型程式設計和過程化程式設計。最新正式標準c++14於2023年8月18日公佈。

[1] 其程式設計領域眾廣,常用於系統開發,引擎開發等應用領域,是至今為止最受廣大程式設計師受用的最強大程式語言之一,支援類:類、封裝、過載等特性。

關於c++函式模板定義時候的返回型別問題

4樓:軒落_翼

你這裡的是錯的

t是在你呼叫的時候來確定的,給你個例子版

:#include

using namespace std;

template

t fun(int a, int b)

int main()

5樓:劉文正粉絲

在模板裡, 你可以抽來象源地把typename理解為一種資料型別(它應該是算成靜態的資料型別)

你在template中定義的是typename 1和2, 沒有t, 所以fun(t a , t b)就肯定是錯的, 因為你定的是1和2, 就沒有t的事.

這個和過載差不多, 只是說過載是對於不同引數進行不同的操作, 這個是對於不同的資料型別, 進行相同的操作, 但是這樣, 模板也是可以減少許多不必要的**書寫.

正確寫法是:

template

_1 fun (_1 a, _2 b)

6樓:匿名使用者

你在**看到的, 原樣抄過來, 別按自己理解寫一個.

template沒有這種寫法.

關於c++模板函式返回值的問題

7樓:匿名使用者

c++ 11 還不支援 模板函式返回值 型別自動推導,新的標準可能會支援,目前主流的 編譯器 應該都不支援。

此處可使用:

template

a plus(a a,a b)

8樓:97樂於助人

因為主函式裡面呼叫了grade函式,而grade函式裡面有輸出語句,所以會有書上的結果。

並不是返回給了主函式值。

9樓:匿名使用者

template

auto plus(a a,a b);

直接寫成返回 為 a型別的就行了

template

a plus(a a,a b);

在定義中也做相應更改。

c++ template 為什麼不能推導返回值型別

10樓:lsz**凌波飛翔

為了儘可能與 c 保持語法和語義上的相容性,在 c++ 中,對於函式的呼叫方而言,返回值總是可以忽略的。

也就是說,對於給定的函式

int foo()

呼叫方可以這麼寫:

foo();  // 忽略返回值

對於模版函式而言,如果依賴返回值做模板的型別推導,就會出現由於呼叫資訊不全導致的二義性。

還是剛才這個例子,我們改為對應的函式模版,template

t foo()

假如我們允許藉助返回值來推導(如下所示)

int a = foo();   // 特化為 foo()double b = foo();   // 特化為 foo()那麼當呼叫方像之前的例子那樣調的時候,編譯器就沒辦法處理了:

foo(); // 報錯,因為缺乏足夠資訊做模板例項化總結一下,一句話結論——「為了與c保持相容,返回值並非是呼叫函式時的必要條件,因此函式模版型別推導和函式過載都不能且不應依賴返回值。」

c++類别範本和函式模板的問題

11樓:匿名使用者

template

class mytmpclass

;template

mytmpclass::mytmpclass()template

void mytmpclass::set_information()template

void mytmpclass::display()int main()

{mytmpclassa;

a.set_information();

a.display();

cout<

你這樣試試。

12樓:★邂逅緣

template

type1 retun(identity&a);

還不支援du返回型別推

zhi導。

template

void identity::display()所有類dao外函式專實現identity後面需屬要跟上函式列表

關於C 類的問題。。急,關於C 類别範本的問題。。急

過載錯誤,不能區別2個過載函式 templateconst t array operator size t index const 加上const就能區別了 給你個例子 include using namespace std class a void fun int b void fun int b...

C語言中什麼是函式的返回值

當一個函式不是void型的時候就必須有一個返回值 main 函式除外,這個返回值就看你這個函式本身是什麼型的。返回值經常用來標誌一些東西,比如一個遊戲程式中的函式int win 用來判斷輸贏,輸返回0,贏返回1,然後主調函式可以根據它的返回值做相應的處理,比如這樣的句子 if win speed 進...

C引用返回值與返回指標

int d c 也就是 d就等效於c了啊 也就是return d 就等效於 return c d是指標d指向的資料,你的寫法中,指標d指向了引用c的位置,其實也就是傳入實參a的地址空間上的資料,故而是一直存在且可以正確返回的。如果你在k 函式內部不是使用傳輸的c 也就是換個變數名,什麼都行 那自然就...