仅个人学习记录,毫无参考性 望知悉!!!
零: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 加操作符