花一點時間深入C 吧(1)

2021-08-20 08:01:55 字數 1163 閱讀 7668

花一點時間深入c++吧(1)

在分析opencv**的時候,可以發現很多問題的解決都離不開class,template

並且計算機視覺的很多任務程檔案都需要呼叫第三方庫(比如g2o),在實際程式設計中,需要自己去寫介面(模仿別人的sample或者demo),有時候為了寫乙個好用的介面,需要自己去構造乙個類或者結構體

然而,c++primer裡面介紹了過於全面,不宜學習,再說也沒有必要全部學習

只要把相關的,常見的知識點學到,就可以啦

我不是想從教科書的角度去講東西,我想從自己的研究過程說說對這些抽象資料結構的理解

那就先從「類」說起吧,比如opencv中的乙個常見類kalman,

class cv_exports_w kalmanfilter  

;

介面泛指實體把自己提供給外界的一種抽象化物(可以為另一實體),用以由內部操作分離出外部溝通方法,使其能被內部修改而不影響外界其他實體與其互動的方式

我想換乙個角度講,如果不用類,可不可以寫出函式predect和correct呢?答案是可以的。那為什麼封裝成乙個類呢?封裝成為類方便他人使用。比如你寫了kalman的程式。你的好朋友小明正好也需要用kalman做**,但是他很懶,不想自己寫,他知道你寫了乙個,於是對你說能不能把你的程式借他一看。如果你把kalman封裝起來,就只需要給他kalman.cpp以及kalman.h就行了,無需把你全部程式都發給他。小明只需要把kalman.cpp以及kalman.h通過編譯器鏈結到他的程式,就可以使用你的程式了。

假設你沒有把kalman封裝起來,那麼小明再看你幾百行的程式的時候,就得把kalman相關部分「扣」出來,放到他的程式裡。因此,類的引進極大地方便了「程式的互動使用」。

類的前身是「函式」,比如寫了乙個求解一元二次方程的函式,以後再求解問題的時候,不必每次都寫,只需要呼叫函式就行了。

可是當乙個問題變得非常複雜的時候,比如非線性優化,往往乙個問題的求解需要呼叫幾十個函式以及數十個變數的時候,就需要乙個更大的「容器」把他們存放起來,方便其他人亦或自己使用。

在c++primer中講到,最好把類的使用者以及類的設計者區分開來。因為要想開發一款成功的應用程式,棋作者必須充分了解並實現使用者的需求。同樣,優秀的類設計者也應該密切關注那些有可能使用該類的程式設計師的需求。作為乙個設計優良的類,既要有直觀且易於使用的介面,也必須具有高效的實現過程

這些話很中肯!

花一點時間,玩玩 ZFS

zfs源 yum install nogpgcheck 插一句 不需要,做個記錄 匯入公鑰rpmkeys import etc pki rpm gpg rpm gpg key zfsonlinux 修改zfs.repo enable 1 yum install zfs modporbe zfs 建立...

SQL深入學習(1) 時間函式

又是乙個很常用的sql語句 資料庫會員表的datetime欄位 欄位名birth 存的日期格式是 yy mm dd 現在我想列出近10天過生日的會員,sql語句要怎麼寫?這還不容易,很容易就想到 select from table where birth between getdate and ge...

時間幾乎會癒合所有傷。請給時間一點時間

時間幾乎會癒合所有傷。請給時間一點時間 總是一味遷就別人 總是到最後 才發現受傷是自己。總是勇敢得這麼無力。你需要我的時候 我都在 到我需要你的時候 我始終找不到你。掏心掏肺的愛乙個人,還是抵不過,無情無義的一句話。心簡單,世界就簡單,幸福才會生長 心自由,生活就自由,到哪都有快樂。個性簽名 當初我...