【C++模板】C++宣告模板時能否用struct關鍵字代替class或者typename
我們知道C++中宣告一個函式或者類的模板支援兩種關鍵字class和typename:
template <class T>
struct Person
{
public:
T age;
};
或者
template <typename T>
struct Teacher
{
public:
T age;
};
而且我們知道在C++中struct和class關鍵字基本上是等價的,因為要相容C語言,所以C++保留了struct關鍵字並且它等價於class關鍵字,那麼在模板裡面是不是可以用struct替代class呢?
如下面的程式碼:
template <struct T>
struct Person
{
public:
T age;
};
答案是否定的,會出現下面的編譯錯誤:
想必這也在預料中,C++保留struct關鍵字主要是為了相容C語言,但是在C語言中是不存在模板的,所以沒有必要再模板中支援strcut宣告模板形參。
相關推薦
【C++模板】C++宣告模板時能否用struct關鍵字代替class或者typename
我們知道C++中宣告一個函式或者類的模板支援兩種關鍵字class和typename: template <class T> struct Person { public: T age; }; 或者 template <typenam
【tmp post】c++模板
spa fun public blog temp nbsp class col tmp 2017-12-29 1 // see file functional: class function<_Res(_ArgTypes...)> 2 template&l
【大數問題】C++大數問題模板
#define MAXN 9999 #define MAXSIZE 10 #define DLEN 4 class BigNum { private: int a[1500]; //可以控制大數的位數 int len; //大數長度 pu
【2016/3】C++ 類與物件進階 運算子過載 new delete 模板 繼承
類與物件: const常量哪怕棧空間資料被改 被訪問時依然是使用存於符號表的資料 建構函式的形式: 拷貝構造 Test(Test &t){} 初始化構造 Test(int d): data(d){} Test
【影象處理】C++實現模板匹配
////////////////////////////////////////////////////////////////////////// //預先判斷——3*3十字中心——區域是否相似,如果相似,則再匹配判斷。這樣可以減少判斷次數。 //前提:模板大於9
【C/C++開發】C++之enum列舉量宣告、定義、使用與列舉類詳解與列舉類前置型別宣告
前面講到可以通過強制轉換將其他型別值賦給列舉變數:Weekday = enumType(2);這是合法的;但是Weekday = enumType(20);是非法的。這裡涉及列舉取值範圍的概念:列舉的上限是 大於最大列舉量的 最小的2的冪,減去1; 列舉的下限有兩種情況:一、列舉量的最小值不小於0,則列
【學習筆記】C# 構造和析構
成員 int 學習 pri [] func 釋放內存 ring 銷毀 構造方法 構造方法是一個特殊的方法,負責初始化對象 構造方法名必須和類名一致 構造方法沒有返回值,但可以有參數,能夠重載 構造方法可以不寫,系統會自動為類添加一個無參的默認構造 如果將構造方法設置為P
【學習筆記】C# 靜態類
實例化 namespace [] line str 過程 ole test 數據 靜態修飾符 用static修飾的成員是靜態成員 靜態成員只能由類來調用 用static修飾的類是靜態類 靜態類不能實例化,只能包含靜態成員和const常量 在內存中一共有五個區域 1
【學習筆記】C# 接口
apple [] oat 訪問 names 使用 foo pub 修飾 使用interface關鍵字定義接口 接口定義一組成員但不直接實現它們 實現接口 實現接口的任何類都必須實現其所有的成員方法 接口不能直接實例化 接口可以包含方法和屬性聲明,不能包含字段 接口中所有
【學習筆記】C# ArrayList
tde 獲取 style demo key ren mov cnblogs content 集合 集合是種容器,在程序中,使用集體管理相關對象組 集合分為非泛型集合和泛型集合 非泛型集合 使用非泛型集合需要引入命名空間System.Collections Arra
【學習筆記】C# 字典
鍵值對 保存 包含 ear 是否 nod 對象 命名空間 不包含 字典 Dictionary是存儲鍵和值的集合 Dictionary是無序的,鍵Key是唯一的 使用時,首先要引入泛型集合命名空間 using System.Collections.Generic;
【問題記錄】C#調用WebApi的PUT&DELETE方法報405錯誤
head 2008r2 功能 工作 http 錯誤 控制面板 面板 int 問題環境:Windows Server 2008R2 IIS7.5 問題描述:網站調用後臺數據接口,GET和POST方法正常,PUT和DELETE方法報 405 Method
【TOJ 5247】C++實驗:時間和日期類
OS 日期類 一行 ID 表示 pac 日期 style pub 描述 用C++實現日期類CDate和時間類CTime,並在次基礎上利用多繼承實現日期時間類CDateTime,使其能輸出樣例信息。 主函數裏的代碼已經給出,請補充完整,提交時請勿包含已經給出的代碼。 int
【TOJ 5254】C++實驗:繼承中的構造函數和析構函數
des 能夠 con OS esp space AC tom cto 描述 實現C++類Base和Derived,並編寫相關構造函數和析構函數,使其能夠輸出樣例信息。 主函數裏的代碼已經給出,請補充完整,提交時請勿包含已經給出的代碼。 int main() { Base
【TOJ 5255】C++實驗:三角形面積(海倫公式)
esc man opera time public 三角形面積 AC pac 公式 描述 實現C++三角形類,其中包含3個點(CPoint類型),並完成求面積。主函數裏的代碼已經給出,請補充完整,提交時請勿包含已經給出的代碼。 int main() { CPoint p
【TOJ 5240】C++實驗:虛函數
spa turn medium virtual AI CI edi time ont 描述 用C++實現一個形狀類和矩形類,並完成求面積函數。 主函數裏的代碼已經給出,請補充完整,提交時請勿包含已經給出的代碼。 int main() { int w, h; while
【編譯原理】c++實現自下而上語法分析器
不可 acm times style size PC -i 表達式 鏈接 寫在前面:本博客為本人原創,嚴禁任何形式的轉載!本博客只允許放在博客園(.cnblogs.com),如果您在其他網站看到這篇博文,請通過下面這個唯一的合法鏈接轉到原文! 本博客全網唯一合法URL:ht
【讀書筆記】C#本質論第一章
environ 系列 駝峰 mman 交互 讀書 接受 ogr 大小 C#本質論第一章。 語言規範 要更註重標識符的清晰而不是簡短。 不要在標識符名稱中使用單詞縮寫。 不要使用不被廣泛接受的首字母縮寫詞,即使被廣泛接受,非必要時也不要用。 要把只含兩個字母的首字母縮寫詞
【讀書筆記】C#本質論第二章
否則 TE 引用 字節 字符類 oid 情況 情況下 pat C#本質論第二章。 基本數據類型 C#的基本數據類型包括整型,浮點類型以及decimal的特殊浮點類型。 整數類型 C#的所有基本類型都有短名稱和完整名稱,完整名稱對應於基類庫(Base Class Libr
【2018.10.11 C與C++基礎】C Preprocessor的功能及缺陷(草稿)
repr 繼承 logs 作用域 ces 變量 找到 可變參數 體系 一、前言及參考資料 C Preprocessor即所謂的C預處理器,C++也繼承了C的預處理程序,但在C++語言的設計與演化一書中,C++的設計者Bjarne Strustrup提及他從未喜歡過C預處理器