C Primer 3ed 學習筆記 (2)

2021-04-12 14:13:53 字數 1460 閱讀 6737

c++的內建資料型別和標準庫類之間的型別是符合型別,如:指標和陣列型別。c++對陣列提供了內建支援,但是僅限於對資料則單個元素的讀寫,對整個陣列的操作則不支援(如用乙個陣列賦值給另乙個陣列)

陣列名是乙個指標,但是常量指標

2.1 為什麼內建陣列型別不支援陣列之間的賦值。支援這種操作要什麼資訊?

答:陣列名是乙個常量指標,可以將陣列賦值給乙個指標變數,但是常量之間不能賦值。支援賦值操作至少在編譯器運算元組的時候直到陣列的長度。

2.2 你認為作為一等公民的陣列應該支援什麼操作?

陣列初始化

陣列比較

陣列賦值

陣列大小查詢

陣列索引範圍檢驗等

靜態與動態記憶體分配的兩個主要區別:

1、 靜態物件是有名字的變數,可以直接對其操作。動態物件是沒有名字的變數,只能通過指標簡介對其進行操作

2、 靜態物件的分配與釋放由編譯器自動處理,不需要程式設計師處理任何事情。動態物件的分配與釋放,必須由程式設計師顯示的給出,有new和delete表示式完成,通常這兩個表示式要配對使用。

2.3

a) 靜態分配物件,物件名字為 ival

b)pi是乙個指標,其中儲存的是整形變數ival的位址

c) pi2是乙個指標,指向動態分配的乙個報存int型別資料且值為1024的記憶體塊

d) pi3是乙個指標,指向動態分配的乙個儲存1024個整形資料的起始位址

2.4while迴圈中的*pi就是10,因此迴圈變成10<10 迴圈體將一次都不執行。同時,如果迴圈體執行的話,pia[*pi]=pia[10],這也是乙個錯誤,不過因為while的條件限制,這個情況是不會發生的。

類的過載操作符,注意過載後要注意函式返回值要不要用引用,因為只有引用才可能用於左值。

2.5

//test.cpp : 定義控制台應用程式的入口點。

//#include 

<

iostream

>

using

namespace

std;

class

matrix

class

date

... ;

2.6 第乙個需要,第二個不需要

2.8

成員函式是一種函式

建構函式是一種成員函式

飛機是一種交通工具

圓形是一種幾何圖形

正方形是一種矩形 

2.9rotate():可以定義為虛函式

print(): 可以定義為虛函式

size():  可以共享,所有類中

dateborrowed():可作為虛函式

rewind(): 獨自

borrower():獨自

is_late():獨自

is_on_loan():獨自

2.10

類對自己和別的類的關係也不能搞的太絕對,不應該對外界一視同仁,應該有個親密關係的,所以protected很必要

C primer學習筆記3

建構函式初始值列表 如果類的成員有const,引用,沒有提供預設建構函式的類型別。那麼我們必須通過建構函式為這些成員賦初始值。class testcase private int i const int ci int di 一般來說,建議直接使用建構函式初始化成員。一方面是初始化和賦值關乎底層效率問...

c Primer學習筆記2

while語句 while語句提供了迭代功能 從1到10求和 include int main std coutfor迴圈實現1到10求和 include int main std cout 未知數目的輸入 include int main std cout 類的簡介 一般將類的定義放在標頭檔案中,...

c primer 學習筆記 2

字串字面值可以分開書寫 const char aa aaa aaa 初始化 int a 0 int a int a 報錯,3.14不能放到int中 int a int a 0 申明和定義的區別 申明規定的變數的型別和名字,定義還申請記憶體,初始化 只申明 extren,但如果初始化了 就是 定義了 ...