欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中的hpp文件及使用hpp文件的好處

 更新時間:2024年02月17日 10:36:18   作者:馬上到我碗里來  
hpp文件是C++程序中一種特殊頭文件,它可以包含類的聲明和實現(xiàn),詳細介紹了使用hpp文件的好處及注意事項,感興趣的朋友跟隨小編一起看看吧

1 什么是hpp文件?

hpp文件是C++程序中一種特殊頭文件,它可以包含類的聲明和實現(xiàn)。與傳統(tǒng)的h文件相比,hpp文件具有以下特點:

  • 將類的聲明和實現(xiàn)放在同一個文件里,減少了代碼量,提高了代碼的可讀性。
  • 無需再將cpp加入到項目中進行編譯,將代碼直接編譯到調(diào)用者的obj文件,不再生成單獨的obj,大幅度減少編譯次數(shù)。
  • 非常適合編寫開源庫,boost庫大量使用模板,采樣hpp的形式可以保持與各個編譯器更好的兼容性。

2 使用hpp文件的好處

  • 減少代碼量,提高代碼可讀性
  • 避免符號重定義錯誤
  • 提高編譯效率
  • 方便編寫開源庫
  • 提高代碼的可維護性

3 注意事項

與傳統(tǒng)的h文件相比,hpp文件有很多優(yōu)點,但是在編寫hpp文件時也需要注意以下事項:

① 不可包含全局對象和全局函數(shù)

由于hpp文件本質(zhì)上是作為h文件被調(diào)用者include,所以當hpp文件中存在全局對象或者全局函數(shù),而該hpp被多個調(diào)用者include時,將在鏈接時導致符號重定義錯誤。要避免這種情況,需要去除全局對象,將全局函數(shù)封裝為類的靜態(tài)方法。

// 錯誤示例
#include <iostream>
int g_val = 0; // 全局對象
void print_val() {
  std::cout << g_val << std::endl;
}
// 正確示例
#include <iostream>
class MyClass {
 public:
  void print_val() {
    std::cout << m_val << std::endl;
  }
 private:
  int m_val = 0; // 類成員
};

② 類之間不可循環(huán)調(diào)用

如果hpp文件中包含多個類,并且這些類之間存在相互依賴關(guān)系,那么在編譯時會導致循環(huán)依賴錯誤。為了避免這種情況,需要對類之間的依賴關(guān)系進行合理的設(shè)計,避免循環(huán)調(diào)用。

// 錯誤示例
#include <iostream>
class A {
 public:
  void foo(B& b) {
    // ...
  }
};
class B {
 public:
  void bar(A& a) {
    // ...
  }
};
// 正確示例
#include <iostream>
class A {
 public:
  void foo(B* b) {
    // ...
  }
};
class B {
 public:
  void bar(A* a) {
    // ...
  }
};

③ 不可使用靜態(tài)成員

hpp文件中的靜態(tài)成員在編譯時會被編譯到調(diào)用者的obj文件中,這會導致多個調(diào)用者共享同一個靜態(tài)成員。如果靜態(tài)成員發(fā)生變化,則會導致所有調(diào)用者都受到影響。因此,在hpp文件中應避免使用靜態(tài)成員。

// 錯誤示例
#include <iostream>
class MyClass {
 public:
  static int s_val = 0; // 靜態(tài)成員
  void print_val() {
    std::cout << s_val << std::endl;
  }
};
// 正確示例
#include <iostream>
class MyClass {
 public:
  void print_val() {
    int val = 0; // 局部變量
    std::cout << val << std::endl;
  }
};

④ 其他注意事項

  • 在hpp文件中可以使用#include預處理指令來包含其他頭文件。
  • 在hpp文件中可以使用#pragma once預處理指令來避免重復包含。
  • 在hpp文件中可以使用using聲明來簡化代碼。
// 示例
#include <iostream>
#include <vector>
#pragma once
using namespace std;
class MyClass {
 public:
  void print_val() {
    cout << m_val << endl;
  }
 private:
  int m_val = 0;
};

到此這篇關(guān)于C++中的hpp文件 的文章就介紹到這了,更多相關(guān)C++ hpp文件 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用?c++?在?windows?上定時執(zhí)行一個函數(shù)的示例代碼

    使用?c++?在?windows?上定時執(zhí)行一個函數(shù)的示例代碼

    這篇文章主要介紹了使用c++在windows上穩(wěn)定定時執(zhí)行一個函數(shù),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • C語言編程C++自定義個性化類型

    C語言編程C++自定義個性化類型

    這篇文章主要介紹了C語言編程中如何來自定義C++個性化類型,文中附含詳細的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • C語言操作符基礎(chǔ)知識圖文詳解

    C語言操作符基礎(chǔ)知識圖文詳解

    這篇文章主要以圖文結(jié)合的方式為大家詳細介紹了C語言位運算基礎(chǔ)知識,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-08-08
  • Qt下監(jiān)測內(nèi)存泄漏的方法

    Qt下監(jiān)測內(nèi)存泄漏的方法

    在寫Qt應用程序時,由于是采用C++語言,經(jīng)常會碰到一個令人棘手的問題,那就是內(nèi)存泄漏,本文主要介紹了Qt下監(jiān)測內(nèi)存泄漏的方法,感興趣的可以了解一下
    2021-12-12
  • C++?vector的簡單實現(xiàn)

    C++?vector的簡單實現(xiàn)

    這篇文章主要為大家詳細介紹了C++?vector的簡單實現(xiàn),使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • c++函數(shù)名指針和函數(shù)指針

    c++函數(shù)名指針和函數(shù)指針

    這篇文章主要介紹了c++函數(shù)名指針和函數(shù)指針,函數(shù)指針和數(shù)據(jù)類似,C++當中函數(shù)也有地址,函數(shù)的地址是存儲函數(shù)機器語言代碼的內(nèi)存地址。我們可以將另外一個函數(shù)的地址作為參數(shù)傳入函數(shù),從而實現(xiàn)函數(shù)的靈活調(diào)用,下面詳細內(nèi)容需要的小伙伴可以參考一下
    2022-02-02
  • QT實現(xiàn)貪吃蛇游戲代碼詳解

    QT實現(xiàn)貪吃蛇游戲代碼詳解

    本文主要為大家詳細介紹了在QT中實現(xiàn)貪吃蛇游戲的詳細教程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 在C++中實現(xiàn)aligned_malloc的方法

    在C++中實現(xiàn)aligned_malloc的方法

    這篇文章主要介紹了在C++中實現(xiàn)aligned_malloc的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • c語言程序設(shè)計文件操作方法示例(CreateFile和fopen)

    c語言程序設(shè)計文件操作方法示例(CreateFile和fopen)

    c主要的文件操作函數(shù)有:CreateFile,CloseHandle,ReadFile,WriteFile,SetFilePointer,GetFileSize。其中的讀寫操作是以字符為單位,獲得文件大小也是以字符為單位。
    2013-12-12
  • C++實現(xiàn)模擬shell命令行(代碼解析)

    C++實現(xiàn)模擬shell命令行(代碼解析)

    這篇文章主要介紹了C++實現(xiàn)模擬shell命令行,本文通過實例代碼進行命令行解析,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12

最新評論