怎樣使用c++

前言

之前學(xué)過c++語法,基本的語法還略微記得邑茄。項(xiàng)目中有了需求姨蝴,要用c++來實(shí)現(xiàn)。擼碼前我想的問題是怎樣組織c++文件肺缕,c++的工程項(xiàng)目規(guī)范是什么左医,最關(guān)心的是c++工程是怎樣解決解耦合,提高代碼復(fù)用性和健壯性的同木。由于是新手浮梢,索性就學(xué)c++新特性,所以選擇了>=c++11彤路。平時(shí)一般用java和python秕硝,都有各自的import和包管理機(jī)制,c++也有對(duì)應(yīng)的namespace洲尊。

namespace實(shí)驗(yàn)

一共三個(gè)文件:main.cpp, model_a.h, model_a.cpp
組織關(guān)系是远豺,model_a為模型類或者utils類,里面有其方法坞嘀,.cpp為實(shí)現(xiàn)文件躯护,main為主文件。model_a中有一個(gè)變量 varA丽涩,有兩個(gè)函數(shù)棺滞。

model_a.h

// ModelA.h
#include<vector>
#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<double>& data);
    double maf2(const vector<double>& data);
    
}

#endif

model_a.cpp

#include<iostream>
#include<vector>
#include"ModelA.h"
using namespace std;
double modela::maf1(const vector<double>& data){
    
    modela::varA++;
    cout<<"this is maf1, print from modela.cpp, varA++ then varA="<<modela::varA<<endl;
    //cout<<"this is maf1(), print from modela.cpp."<<endl;
    return 10.0;
}

double modela::maf2(const vector<double>& data){
    
    cout<<"this is maf2, print from modela.cpp, now varA="<<modela::varA<<endl;
    modela::varA++;
    cout<<"this is maf2, print from modela.cpp, varA ++, now varA="<<modela::varA<<endl;
    //cout<<"this is maf2(), print from modela.cpp."<<endl;
    return 10.0;
}

main.cpp

#include<iostream>
#include"ModelA.h"
using namespace std;
int main(){
    vector<double> data(10);
    modela::maf1(data);
    modela::maf2(data);
    cout<<"call modela::varA: from main, varA="<<modela::varA<<endl;
    modela::maf1(data);
    return 0;
}

結(jié)果:
上述文件編譯通過,鏈接時(shí)出錯(cuò)矢渊,說varA定義了兩次继准,將varA定義為 static后編譯鏈接通過。原因可能是:static在編譯時(shí)就在內(nèi)存靜態(tài)區(qū)域進(jìn)行了初始化矮男,非static變量移必,在include的時(shí)候會(huì)在多個(gè)文件都進(jìn)行初始化,所以提示重復(fù)定義昂灵。

varA在外部調(diào)用的時(shí)候,每次都是初始值10舞萄,mdoel_a自己調(diào)用時(shí)能夠保存歷史更改值眨补。

c++可以通過namespace來管理各個(gè)模塊,但是命名空間不能使用‘.’號(hào)定義倒脓,如:namespace io.github.model{} 會(huì)報(bào)錯(cuò)撑螺。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市崎弃,隨后出現(xiàn)的幾起案子甘晤,更是在濱河造成了極大的恐慌含潘,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件线婚,死亡現(xiàn)場(chǎng)離奇詭異遏弱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)塞弊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門漱逸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人游沿,你說我怎么就攤上這事饰抒。” “怎么了诀黍?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵袋坑,是天一觀的道長。 經(jīng)常有香客問我眯勾,道長枣宫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任咒精,我火速辦了婚禮镶柱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘模叙。我一直安慰自己歇拆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布范咨。 她就那樣靜靜地躺著故觅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渠啊。 梳的紋絲不亂的頭發(fā)上输吏,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音替蛉,去河邊找鬼贯溅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛躲查,可吹牛的內(nèi)容都是我干的它浅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼镣煮,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼姐霍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤镊折,失蹤者是張志新(化名)和其女友劉穎胯府,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恨胚,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骂因,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了与纽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侣签。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖急迂,靈堂內(nèi)的尸體忽然破棺而出影所,到底是詐尸還是另有隱情,我是刑警寧澤僚碎,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布猴娩,位于F島的核電站,受9級(jí)特大地震影響勺阐,放射性物質(zhì)發(fā)生泄漏卷中。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一渊抽、第九天 我趴在偏房一處隱蔽的房頂上張望蟆豫。 院中可真熱鬧,春花似錦懒闷、人聲如沸十减。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帮辟。三九已至,卻和暖如春玩焰,著一層夾襖步出監(jiān)牢的瞬間由驹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國打工昔园, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔓榄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓默刚,卻偏偏與公主長得像甥郑,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羡棵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理壹若,服務(wù)發(fā)現(xiàn)嗅钻,斷路器皂冰,智...
    卡卡羅2017閱讀 134,626評(píng)論 18 139
  • 大家好秃流,我是IT修真院鄭州分院第6期的學(xué)員赂蕴,一枚正直純潔善良的JAVA程序員今天給大家分享一下,Maven常用打包...
    一筒君閱讀 945評(píng)論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法舶胀,類相關(guān)的語法概说,內(nèi)部類的語法,繼承相關(guān)的語法嚣伐,異常的語法糖赔,線程的語...
    子非魚_t_閱讀 31,596評(píng)論 18 399
  • 重新系統(tǒng)學(xué)習(xí)下C++;但是還是少了好多知識(shí)點(diǎn)轩端;socket放典;unix;stl基茵;boost等奋构; C++ 教程 | 菜...
    kakukeme閱讀 19,823評(píng)論 0 50
  • C++入門基礎(chǔ) namespace專題講座 namespace概念 所謂namespace,是指標(biāo)識(shí)符的各種可見范...
    蔡俊宇閱讀 778評(píng)論 0 2