c++の使い方

1669 ワード

前言
前にc++文法を習ったことがありますが、基本的な文法はまだ少し覚えています.プロジェクトに需要があり、c++で実現します.コードを引く前に私が考えた問題はどのようにc++ファイルを組織するか、c++の工事プロジェクト規範は何なのか、最も関心を持っているのはc++工事がどのように解結合を解決し、コードの多重性と丈夫性を高めるかです.初心者なので、いっそc++の新しい特性を学び、>=c++11を選びました.普段はjavaとpythonが一般的で、それぞれのimportとパッケージ管理メカニズムがあり、c++にも対応するnamespaceがあります.
namespace実験
全部で3つのファイル:main.cpp,model_a.h, model_a.cpp組織関係は、model_aはモデルクラスまたはutilsクラスであり,中にはその方法があり,.cppは実装ファイル,mainはメインファイルである.model_aには変数varAがあり、2つの関数があります.
model_a.h
// ModelA.h
#include
#ifndef MODELA_H
#define MODELA_H

namespace modela{
    int varA = 10;
    using std::vector;  //by this, don't need to write std::vector in this scope, just use vector
    double maf1(const vector& data);
    double maf2(const vector& data);
    
}

#endif
model_a.cpp
#include
#include
#include"ModelA.h"
using namespace std;
double modela::maf1(const vector& data){
    
    modela::varA++;
    cout<& data){
    
    cout<
main.cpp
#include
#include"ModelA.h"
using namespace std;
int main(){
    vector data(10);
    modela::maf1(data);
    modela::maf2(data);
    cout<
結果:上記のファイルのコンパイルが通過し、リンク時にエラーが発生し、varAが2回定義されたと言い、varAをstaticと定義した後にコンパイルリンクが通過した.理由は、staticがコンパイル時にメモリ静的領域で初期化され、static変数ではなくincludeの時に複数のファイルで初期化されるため、繰り返し定義を求める可能性があります.
varAが外部で呼び出されるたびに、毎回初期値10,mdoel_a自己呼び出し時に履歴変更値を保存できます.
c++はnamespaceで各モジュールを管理できますが、ネーミングスペースでは「.」番号定義は使用できません.たとえば、namespace io.github.model{}がエラーを報告します.