原创 探索c++的對象模型(一):單繼承和多繼承的對象模型

虛函數表就是通過一塊連續內存來保存虛函數的地址單繼承虛函數的對象模型class A{public:     virtual void func1()     {           printf("A::func1\n");     } 

原创 c++中的指針與引用

引用:不是定義一個變量,而是給已經存在的變量取一個別名,所以引用一定要初始化定義的格式:類型& 引用名=已定義過的變量名引用的特點:1.變量可以有多個別名                    2.引用必須要初始化            

原创 模板實現雙向鏈表和順序表

首先是帶頭結點的雙向鏈表 #include <iostream> #include <stdio.h> #include <assert.h> using namespace std; template <class T> st

原创 進程間通信(一):管道

讓毫不相關的進程想辦法讓他們看到一份公共資源管道的目的數據傳輸資源共享(多個進程共享)通知事件進程控制(控制之前進行溝通)管道:將一個進程連接到另一個進程的數據流稱爲管道管道的特點管道只能單向傳輸,如果需要雙向傳輸,建立兩個管道即可管道的

原创 函數重載

函數重載: 函數重載是函數的一種特殊情況,c++允許在同一作用域下聲明幾個同名函數,但是整幾個同名函數的形參列表必須不相同(參數個數不同,參數的類型(對應位置的參數),順序也不相同) 返回值不一樣不能視爲函數重載     爲什麼c++支持

原创 進程控制

進程創建fork從已經存在的進程創建一個進程,新進程稱爲子進程,原進程稱爲父進程,調用此函數子進程返回0,父進程返回子進程的進程ID進程調用fork之後:分配新的內存和數據塊給子進程將父進程的數據拷給子進程調用失敗的原因:系統內有太多的進

原创 簡易版shell

我門用exec函數來寫一個簡易版的shell   我們先理一下步驟: 首先將輸入的在命令解析爲一個一個的命令,就去掉空格,我們可以使用strtok函數(創建命令) 然後在創建一個進程讓它去執行這個命令(解析命令並執行) 父進程等

原创 劍指offer(面試題17):合併兩個已排序的鏈表

我們要做的就是合併兩個有序鏈表,使之合併之後依舊有序 那麼我們要怎麼做呢 首先我們從合併鏈表的頭結點開始,首先鏈表1的頭結點的值小於鏈表2的頭結點的值,因此合併後新鏈表的頭結點即鏈表1的頭結點, 然後我們繼續往後遍歷,畫圖如下

原创 探索c++的對象模型(二):菱形繼承的多態模型

首先我們已經知道了多繼承和單繼承的對象模型接下來我們來看一個複雜的菱形繼承菱形繼承的多態繼承#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<iostream>using

原创 進程間通信(二):消息隊列

消息隊列是操作系統爲兩個無關進程準備的通信方式,每個消息隊列都有一個他自己的ID我們用來標識消息隊列消息隊列的不足就是我們發送消息的最大長度有限制,並且操作系統提供的消息隊列的個數也是有限的此ID用如下函數創建此函數中的path爲一個路徑

原创 c++:類和對象

一:概念c++不是一個完全面向對象的語言,它是基於面向對象的語言,因爲我們的c++語言中還包含C語言的東西,而我們的C語言是一個面向過程的語言面向對象的的三大特徵:封裝繼承多態類:裏面有數據(變量)和方法(函數)三種訪問限定符:publi

原创 繼承和多態

繼承概念繼承:是一種複用的手段,子類裏擁有所有的父類裏的成員,三種繼承關係的父類成員在子類下的訪問關係的變化繼承關係基類的public成員基類的protected成員基類的private成員public繼承仍爲public成員爲prote

原创 模板:泛型編程

模板:就是與類型無關的邏輯代碼模板函數:就是要實現和類型無關的函數那麼爲什麼會有模板這個東西呢?我們在實現swap函數和isequal函數,他們都是一些與類型相關的函數,並且如果我們要根據類型實現多個swap函數的化那麼代碼的重複率就會特

原创 淺析無符號整型和有符號整型

整型包括長整型(long),短整形(short),整型(int),字符型(char)。衆所周知,char是字符類型。但其實char也是一個比較古怪的整型,長度爲1字節 (默認是無符號類型)。 然後我們來解釋一下有符號數和無符號數,

原创 設計模式:單例模式

概念:在一個進程中一個類只能實例化出一個對象的設計模式 懶漢式:在你真正用到的時候纔去創建這個單例對象 餓漢式:不管你用不用的上,在你創建這個類的時候就直接創建對象 #include<stdio.h> #include<iostream