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
varAが外部で呼び出されるたびに、毎回初期値10,mdoel_a自己呼び出し時に履歴変更値を保存できます.
c++はnamespaceで各モジュールを管理できますが、ネーミングスペースでは「.」番号定義は使用できません.たとえば、
前に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{}
がエラーを報告します.