博覽網:第一週筆記

仅个人学习记录,毫无参考性  望知悉!!!

零:c++書籍目錄

《the C++ programming language》

《C++ Primer》                            工具書

《Effective C++ 》

《The C++ standard library》

《STL源码剖析》                       

壹:c++的特點與c的區別

c++分為  “c++語言語法”  和  “c++標準庫”    兩部分

區別:c語言:c語言創建的數據由於語法問題,是全局的,導致所有函數(大部分函數)都可以處理,不安全

            c++:c++將 數據 和  處理這些數據 函數 包含在一起(通過 class),通過class為類型,創建objects(對象)處理,封裝                                                                                                                                                                        注:class與struct(結構)類似,不過更好

class:分類  1.不帶指針  object based:面對單一的class的設計.數據部分创建对象后  相关数据部分即完成数据空间分配

                        2.帶指針      object oriented:面對多重classes的設計,classes和classes之間的關係  string .數據部分,需要另外分配空間,類 中(class)存放的僅僅是指針

貳:c++程序 

            頭文件.h(通過#include".h"引入)    + 主程序.cpp  +  標準庫.h(通過#include<.h>引入)                                                                                                                注:延伸文件名不一定是.h或.cpp

  c与 c++的输出及头文件差异:

            c語言

                1.頭文件stdio.h

                  2.printf  输出时需要指定变量类型

              c++

                  1.頭文件iostream(標準輸入輸出),用c的頭文件需要在前面加c(cstdio.h)                                                                                                                                    注:可以不含.h

                  2.cout  基本类型都可直接输出无需指定类型

  叁:.h頭文件

  c++class(類)头文件防卫式声明

                    #ifndef  __COMPLEX__

                    #define __COMPLEX__

                      {

                              ......

                      }

                        #endif

                                                                                                                注:防止 重複#include的操作

class head(類的頭)    +  class body(類主體)

  class head(class 類的名稱)

例: class date

      {


          ③  public:

          ①  date (②參數類型=0)

                  :初始化參數

                  {

                          ...

                  }

            ④  返回類型 operator ==(const 參數類型)

            private:

                      int a;

                      friend 函數名

                      ...

            };

inline bool ⑤date::operator==(const person &ps) const

{

if (this->age==ps.age)

return true;

return false;

}

                                                                                                              注:大括號后加;號

    class body(類的主體)

類分為public(公開的).private(私有的)和protected(受保護的) 區域

private區域中存放的

        數據,函數:只能通過成員函數訪問,全局或其他函數無法訪問

        友元聲明:friend 函數名,友元函數可以特殊訪問私有的數據和函數,

                              相同class的各個對象互為友元

                                                                                                          注:缺點會打破封裝,慎用

③public區域存放的

數據,函數:能被外界訪問

構造函數:用來創建對象,沒有返回類型,函數名和類名相同,必須用特殊初始化參數的方式

inline函數(內聯)

類似宏定義(更好)

在class內部直接定義的就是inline,在外部定義的可以加 inline,建議inline

                                                                      注:inline由編譯器決定,只有簡單的函數才能inline

肆④函數

                      返回類型+函數名+(參數)

返回類型和參數傳遞

可以傳reference(引用) 或 傳value(值)

如果函數需要創建臨時變量,則只能傳value(值),不能傳reference(引用)

                                                                      注:一般用傳reference(引用),慎用傳value(值)

②參數

如果函數不打算改變參數值,要加const,可以有默認值

⑤成員函數

聲明或定義在class類里的函數

調用或定義需加 類名::函數名

有一個this 的隱含參數,聲明時不能寫出,誰調用成員函數,誰就是this

全局函數(非成員函數)

定義在class外部的函數

伍:操作符重載

與函數寫法相同,函數名需要operator 加操作符

你可能感兴趣的:(博覽網:第一週筆記)