1. 程式人生 > >C++--繼承中的類模板語法

C++--繼承中的類模板語法

當模板遇上繼承之後會發生什麼呢?

寫一個簡單的測試案例來說明當模板與上繼承發生的“”大事件“”

#include <iostream>
using namespace std;

template<typename T>
class A
{
public:
	A(T a)
	{
		this->a = a;
	}
	T &get()
	{
		return a;
	}
protected:
public:
	T a;
};


//從模板類中派生模板類
template <typename T>
class C :public A<T>
{
public:
	C(T c, T a) :A<T>(a)//初始化引數列表
	{
		this->c=c;
	}
	void printC()
	{
		cout << "c " << c << endl;
	}
private:
	T c;
};

int main()
{
	C<int> c1(1,2);
	c1.printC();
	return 0;
}

程式碼結果我就沒加上了,想必大家都知道了。

這裡可以重點看看看看在模板上繼承模板。

相關推薦

C++/Java__模板的靜態成員變數和靜態成員函式

C++: 類模板例項化的每個模板類(每個模板類指的是對於宣告時候對模板指定的型別,如List<int>,List<double>中的int,double.)都有自己的類模板靜

C++--繼承模板語法

當模板遇上繼承之後會發生什麼呢? 寫一個簡單的測試案例來說明當模板與上繼承發生的“”大事件“”#include <iostream> using namespace std; templ

C繼承

本節課將介紹C#中的繼承,其目的如下: 1.基類的實現 2.類的繼承 3.在派生類中初始化基類 4.如何呼叫基類成員 5.如何覆蓋基類成員 繼承是面向物件程式設計的主要特徵之一,它可以讓你重用程式碼,可以節省程式設計的時間。 1.清單8-1 繼承: Base

3.1 C++繼承的概念及語法

3.1 派生類 繼續 con title display 提高 編譯 只需要 參考:http://www.weixueyuan.net/view/6358.html、 總結:   繼承可以理解為一個類從另一個類獲取方法(函數)和屬性(成員變量)的過程。   被繼承的類稱

繼承型的轉換

pre 主函數 void 正常 line instance 對象 div 是否 執行以下代碼: class Mammal{} class Dog extends Mammal {} class Cat extends Mammal{} public class Test

C++繼承的構造與析構

pause cout default sys class bject iostream pub efault #include <iostream> #include <string> using namespace std; class O

[C++ Template]基礎--模板

3 類模板 與函式相似, 類也可以被一種或多種型別引數化。   3.1 類模板Stack的實現 template <typename T> class Stack { private: std::vector<T> elems; // 儲存元素的容

C++ 繼承的記憶體佈局

今天在網上看到了一篇寫得非常好的文章,是有關c++類繼承記憶體佈局的。看了之後獲益良多,現在轉在我自己的部落格裡面,作為以後複習之用。 ——談VC++物件模型 (美)簡.格雷 程化    譯 譯者前言 一個C++程式設計師,想要進一步提升技術水平的話

詳解C++程式設計的宣告和物件成員的引用

C++類的宣告和物件的建立 類是建立物件的模板,一個類可以建立多個物件,每個物件都是類型別的一個變數;建立物件的過程也叫類的例項化。每個物件都是類的一個具體例項(Instance),擁有類的成員變數和成員函式。 與結構體一樣,類只是一種複雜資料型別的宣告,不佔用記憶體空間。而物件是類這種資料型別的一個變

34、不一樣的C++系列--陣列模板

陣列類模板 首先先了解一個小知識點: 模板引數可以是數值型引數(非型別引數),例如這樣: template <typename T, int N> void func() { //使用模板引數定義區域性陣列 T a[N];

C++11資料成員初始化方法詳解

C++98為類中提供類成員的初始化列表。 類物件的構造順序是這樣的:1.分配記憶體,呼叫建構函式時,隱式/顯示的初始化各資料成員 2.進入建構函式後在建構函式中執行一般計算   1.類裡面的任何成員變數在定義時是不能初始化的。   2.一般的資料成員可以在建構函式中初始化。   3.const資料成員必須在

C++繼承建構函式和解構函式的呼叫順序

class Fish:public Animal { public: Fish() { cout<<"this is Fish"<<endl; } ~Fish() { cout<<"this is free Fish"<<en

C++連結串列模板

記錄自己寫的一個連結串列類模板,兩個標頭檔案:一個是節點標頭檔案Node.h,一個是連結串列標頭檔案LinkList.h。 Node.h #pragma once #include <iostream> template <ty

C#.net的using語法, SQl連線資料庫

using (SqlConnection connection = new SqlConnection(connectionString)){using (SqlCommand cmd = new SqlCommand(SQLString,connection)){try{

嵌入式C語言__DATE__ " "__TIME__語法問題

      在一次emwin例程中碰到一個語句:  GUI_DispStringHCenterAt("Compiled " __DATE__ " "__TIME__,          xCenter, ((FACTOR_ANY_COMP * ySize) >&g

C++程式設計CALSS的編寫(一):不含指標資料的

首先,在我理解當中,C++程式設計中的類可以分為兩種型別,第一種是包含指標的,另一種則是不包含的,不包含指標的類,其中private裡填寫自己的資料,這時候其中的資料型別比如int,double,float等等型別都是標準庫裡面已經寫好的,也自動為我們分配了記憶體,不用去考

c++繼承的子,如何呼叫父的同名函式?

子類呼叫父類的同名函式: 子類和父類返回值引數相同,函式名相同,有virtual關鍵字,則由物件的型別決定呼叫哪個函式。 子類和父類只要函式名相同,沒有virtual關鍵字,則子類的物件沒有

C++模板與用C語言實現模板

1、模板的概念 我們已經學過過載(Overloading),對過載函式而言,C++的檢查機制能通過函式引數的不同及所屬類的不同。正確的呼叫過載函式。例如,為求兩個數的最大值,我們定義MAX()函式需要對不同的資料型別分別定義不同過載(Overload)版本。 //函式

C++定義一個不能被繼承(友元+模板)

自從C++11標準出來之後,就有了關鍵字final可以直接宣告一個類不能被繼承。那麼,在此之前如果想要一個類不能被繼承,可能還需要下一番功夫。 文章目錄 1.宣告建構函式為私有 2.子類宣告為基類的友元類 3.虛繼承——子類

C++模板詳細講述

技術 要求 ebe div spa 限制 dcb 模板的模板 文本文件 一、類模板定義及實例化 1. 定義一個類模板: 1 template<class 模板參數表>2 3 class 類名{4 5 // 類定義......6 7 };