《C++標準程序庫》學習筆記1--第二章第三章

?————————— 第二章 —————————

1.(P11)

C++規定:除了以typename修飾外,template內的任何標志符號都被視為一個值(value)而非一個型別。

eg.

?

template?<class?T>?
class?MyClass{?
????typename?T::SubType?
*ptr;?
};

?

?

這里typename指出SubType是class T中定義的一個型別,因此ptr是一個指向T::SubType的指針,否則SubType會被當作一個static成員,于是:

T::SubType *ptr被認為是SubType與ptr的乘積。

?

2.(P12)

template class 的 member template問題:

下面例子,即使兩個型別之間可以自動轉換,如int和double,如果我們對assign()使用不同的template型別,也會出錯。

?

template?<class?T>?
class?MyClass{?
private:?
????T?value;?
public:?
????
void?assign(cosnt?MyClass<T>&?x)?
????{?
????????
//?x?must?have?same?type?as?*this?
????????value?=?x.value;?
????}?
????...?
};

?

?

再看這個:

?

template?<class?T>?
class?MyClass{?
private:?
????T?value;?
public:?
????template?
<class?X>??//?member?template?
????void?assign(cosnt?MyClass<X>&?x)?
????{?
????????
//?allows?different?template?types?
????????value?=?x.getValue();?
????}?
????T?getValue()?
const{?
????????
return?value;?
????}?
????...?
};

?

?

現在,assign()的參數x和*this的型別并不相同,所以兩個類也就不同
不能再直接存取MyClass<>的private成員和 protected成員,取而代之,
此例中使用了getValue()

?

3.(P14)

對基本型別的顯示初始化

如果采用不含參數、明確的constructor調用語法,基本型別會被初始為

eg.

?

int?i1;???//?undefined?value
int?i2?=?int();???//?initialized?with?zero

?

?

?

4.(P16)

異常問題。

?? ①.異常處理不是錯誤處理

?? ②.? void f() throw(xxx) 是f()拋出XXX類型的異常,

????? 而void f() throw()? 是指f()拋出任何異常,這里好多人容易弄錯。

?

5.(P16)

命名空間。

eg.

?

namespace?tankywoo{?
????
class?A;?
????
class?B;?
????...?
}?
...

?

?

則using tankywoo::A會使A成為當前作用域內代表tankywoo::A的同義字

而using namespace tankywoo會使namespace內的所有名字曝光(A和B)。

?

?————————— 第三章 —————————

?6.(P23)

命名空間
上一篇也講過。
使用C++標準程序庫的任何標識符時,有三種選擇:(以下都以cout為例)
①直接指定標識符:

std::cout?<<?"Tanky?Woo"?<<?std::endl;

?

②使用using declaration,可使我們不再需要加上”std::”

???using?std::cout;
???cout?
<<?"Tanky?Woo"?<<?std::endl;

?

③使用using directive,那么std內定義的所有標識符都有效。

??using?namespace?std;
??cout?
<<?"Tanky?Woo"?<<?endl;

?

?

7.錯誤處理和異常處理
異常處理這塊接觸的少,而且第三章這里也是簡略的講到,所以這里先放著,有經驗了再補。

?

8.配置器(Allocators)
同上。?

?

?

轉載于:https://www.cnblogs.com/tanky_woo/archive/2011/01/23/1942611.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392710.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392710.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392710.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

讓物聯網真正起飛的關鍵:無線充電

從一般郊區家庭到工廠裝配生產線&#xff0c;我們生活中的每個角落都正在經歷“智能”技術強化的過程。物聯網&#xff08;IoT&#xff09;技術看似無所不在&#xff0c;但是為這些裝置持續供電仍是一大挑戰&#xff0c;除非這個問題能夠解決&#xff0c;否則許多令人興奮的物聯…

【NOIP2016】憤怒的小鳥

題目描述 Kiana最近沉迷于一款神奇的游戲無法自拔。 簡單來說&#xff0c;這款游戲是在一個平面上進行的。 有一架彈弓位于(0,0)處&#xff0c;每次Kiana可以用它向第一象限發射一只紅色的小鳥&#xff0c;小鳥們的飛行軌跡均為形如的曲線&#xff0c;其中a,b是Kiana指定的參數…

leetcode 127. 單詞接龍(bfs)

給定兩個單詞&#xff08;beginWord 和 endWord&#xff09;和一個字典&#xff0c;找到從 beginWord 到 endWord 的最短轉換序列的長度。轉換需遵循如下規則&#xff1a; 每次轉換只能改變一個字母。 轉換過程中的中間單詞必須是字典中的單詞。 說明: 如果不存在這樣的轉換序…

java swing 動態生成表格_6 個曾經牛逼哄哄的 Java 技術,你用過嗎?

大家好啊&#xff0c;今天給大家分享下我的開發歷程中&#xff0c;我知道的那些被淘汰的技術或者框架&#xff0c;有些我甚至都沒有用過&#xff0c;但我知道它曾經風光過。廢話不多說&#xff0c;下面我要開始吹了……1、Swing下面這個是用 swing 開發的&#xff1a;Swing 算是…

如果您是JavaScript開發人員,為什么要進行增強現實-以及如何開始

by Evaristo Caraballo通過Evaristo Caraballo 如果您是JavaScript開發人員&#xff0c;為什么要進行增強現實-以及如何開始 (Why you should do Augmented Reality if you are a JavaScript developer — and how to start) If you are a JavaScript coder who is still late…

[Java 安全]加密算法

Base64編碼 算法簡述 定義 Base64內容傳送編碼是一種以任意8位字節序列組合的描述形式&#xff0c;這種形式不易被人直接識別。 Base64是一種很常見的編碼規范&#xff0c;其作用是將二進制序列轉換為人類可讀的ASCII字符序列&#xff0c;常用在需用通過文本協議&#xff08;比…

hdu5299 Circles Game

題意是這樣。給出非常多圓&#xff0c;要么兩兩相離&#xff0c;要么包括&#xff0c;若刪掉一個圓&#xff0c;那被他包括的都要刪除&#xff0c;若某人沒有圓給他刪&#xff0c;那么他就贏了。 。。。知道樹上博弈的話。就非常easy。。。不知道的話。這確實是個神題…… 按半…

leetcode 1356. 根據數字二進制下 1 的數目排序(排序)

給你一個整數數組 arr 。請你將數組中的元素按照其二進制表示中數字 1 的數目升序排序。 如果存在多個數字二進制中 1 的數目相同&#xff0c;則必須將它們按照數值大小升序排列。 請你返回排序后的數組。 示例 1&#xff1a; 輸入&#xff1a;arr [0,1,2,3,4,5,6,7,8] 輸…

oracle java認證_如何通過Oracle的Java認證-開發人員實用指南

oracle java認證by javinpaul由javinpaul 如何通過Oracle的Java認證-開發人員實用指南 (How to Pass Oracle’s Java Certifications — a Practical Guide for Developers) A Java certification is highly regarded in the IT Industry and provides a Java developer with …

Oracle中exists與in的效率探討

in 與 exist 的語法比較&#xff1a; select from 數據表 t where t.x in (...) 括號內可以是符合t.x字段類型的值集合&#xff0c;如(1,2,3)&#xff0c;但如果t.x是number類型的時候&#xff0c;似乎這樣的寫法會出問題&#xff1b;也可以是通 過另外的sele…

log日志輪轉--logrotate

服務器上的日志包括系統日志和服務日志每天都會產生n多log,好多人會自己寫腳本來進行日志的切割、壓縮等&#xff0c;而忽略了系統自帶的服務--logrotate。 簡介 logrotate是個十分有用的工具&#xff0c;它可以自動對日志進行截斷&#xff08;或輪循&#xff09;、壓縮以及刪除…

2個字段并在一次插入一個字段里面_elasticsearch外用與內觀(二)-當插入文檔時,elasticsearch都在做什么...

Previous: elasticsearch外用與內觀(一)-常用功能與使用方法 在了解了es的基本用法之后&#xff0c;我們再來看看當插入文檔數據時&#xff0c;elasticsearch都在做什么。首先&#xff0c;es的索引只是一個邏輯概念&#xff0c;實際上是由一個個物理分片組成的,每個分片就是一個…

學習Spring Data JPA

簡介 Spring Data 是spring的一個子項目&#xff0c;在官網上是這樣解釋的&#xff1a; Spring Data 是為數據訪問提供一種熟悉且一致的基于Spring的編程模型&#xff0c;同時仍然保留底層數據存儲的特??殊特性。它可以輕松使用數據訪問技術&#xff0c;可以訪問關系和非關系…

azure多功能成像好用嗎_Azure持久功能簡介:模式和最佳實踐

azure多功能成像好用嗎Authored with Steef-Jan Wiggers at Microsoft Azure由Microsoft Azure的Steef-Jan Wiggers撰寫 With Durable Functions, you can program a workflow and instantiate tasks in sequential or parallel order, or you can build a watch or support a…

leetcode 327. 區間和的個數(treemap)

給定一個整數數組 nums&#xff0c;返回區間和在 [lower, upper] 之間的個數&#xff0c;包含 lower 和 upper。 區間和 S(i, j) 表示在 nums 中&#xff0c;位置從 i 到 j 的元素之和&#xff0c;包含 i 和 j (i ≤ j)。 說明: 最直觀的算法復雜度是 O(n2) &#xff0c;請在此…

常用的工具函數

得到兩個數組的并集, 兩個數組的元素為數值或字符串//tools.js export const getUnion (arr1, arr2) > {return Array.from(new Set([...arr1, ...arr2])) }//調用頁面 import { getUnion } from /libs/toolsthis.getUnion getUnion([1,2,3,5],[1,4,6]) //(6) [1, 2, 3,…

git 常用commands(轉)

常用 Git 命令清單 作者&#xff1a; 阮一峰 日期&#xff1a; 2015年12月 9日 我每天使用 Git &#xff0c;但是很多命令記不住。 一般來說&#xff0c;日常使用只要記住下圖6個命令&#xff0c;就可以了。但是熟練使用&#xff0c;恐怕要記住60&#xff5e;100個命令。 下面是…

Win2003磁盤分區調整

引用如下&#xff1a; 可能大家都知道&#xff0c;在Windows Server 2003下&#xff0c;普通版本的分區魔術師是無法運行的&#xff0c;而Windows內置的命令行工具Diskpart則能勝任分區魔術師的大部分工作&#xff0c;它的功能非常強大。輸入Diskpart后&#xff0c;將顯示如圖所…

檢查集群狀態命令_輕松管理Kubernetes集群的7個工具

Kubernetes正在不斷加快在云原生環境的應用&#xff0c;但如何以統一、安全的方式對運行于任何地方的Kubernetes集群進行管理面臨著挑戰&#xff0c;而有效的管理工具能夠大大降低管理的難度。K9sk9s是基于終端的資源儀表板。它只有一個命令行界面。無論在Kubernetes儀表板Web …

leetcode 122. 買賣股票的最佳時機 II(貪心算法)

給定一個數組&#xff0c;它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。你可以盡可能地完成更多的交易&#xff08;多次買賣一支股票&#xff09;。 注意&#xff1a;你不能同時參與多筆交易&#xff08;你必須在再次購買前出售掉…