C++/服務器開發4天實戰訓練營


第一天:

1.四種不同的方式來實現add函數

//面向過程
int add1(int a, int b)
{
    return a + b;
}

//面向對象
class ADD{
public:
    int operator()(int a, int b)
    {
        return a + b;
    }
};

//泛型編程
template<typename T, typename U>
auto add3(T a, U b) -> decltype(a + b)
{
    return a + b;
}

//函數式編程
auto add4 = [](int a, int b) -> int{
    return a + b;
};

int main()
{
    ADD add2;
    cout << add1(3, 4) << endl;
    cout << add2(3, 4) << endl;
    cout << add3(3, 4) << endl;
    cout << add4(3, 4) << endl;
    return 0;
}

 

2.函數和數組在本質上都是映射.

數組的下標可以看作傳入的參數;

函數比較消耗計算資源;數組比較消耗存儲資源

函數:壓縮的數組 <-> 數組:展開的函數

兩者轉換: 時間換空間與空間換時間.

 

 

3.編譯和鏈接

 

使用nm -C可以查看文件中的符號的信息,當前函數有數字代表當前函數的定義存儲在當前文件中的.

可以看到單獨的.o文件中只是存儲自己文件中定義的函數;而總的可執行文件a.out則存儲所有需要用到的函數.

 

 

 

 4.googletest使用

(1)第三方測試框架和被測代碼的邏輯

 (2)googletest下載與編譯

git clone https://github.com/google/googletest.git

去執行makefile指令去編譯這個工程,如果g++不是默認指定c++11,則需要在其中添加

CMakeList.txt中:

 

 新建build文件夾,在其中執行cmake,make的指令.

 

然后將產生的include和lib文件夾挪到外邊自己代碼的目錄(當然不挪也行,只是路徑長一些).

 

 

 

 

5.printf的有趣用法,輸出彩色文字

中間必須為";",且之間不能有空格.

 

g++ main.cpp -I include -L lib -std=c++11 -lpthread -lgtest 
//可以把這部分加到makefile中
all:
    g++ main.cpp -I include -L lib -std=c++11 -lpthread -lgtest 

然后只需make,就可以執行這個makefile文件了.

得到如下結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM