嘗鮮c++踩坑合集

在家自學了一段時間c++.其中遇到了一些問題,及思考過程,記錄下來和大家探討一下.




  • 1: c++的模板不支持分離文件編譯,導致模板類定義了方法的實現(xiàn)寫到了cpp文件里不生效,這沒人告訴你,估計你也很難猜到吧.

如果你一定需要使用模板進行泛型編程,還要保留.h頭文件,可以這么寫:
頭文件里只引用.cpp文件,包含模板的代碼全部寫到.cpp文件里.我試過了,不會影響泛型的繼承
xxx.h:

//
// Created by 0neBean on 2020/1/11.
//

#ifndef DATA_STRUCTURE_OPERATOR_H
#define DATA_STRUCTURE_OPERATOR_H

#include "xxx.cpp"

#endif //DATA_STRUCTURE_OPERATOR_H

xxx.cpp:

#include <iostream>
#include "../base/Object.h"

using namespace std;

template<typename T, class C>
class Operator : public Object {

public:

    bool operator==(T obj) {
        cout << "== type" << endl;
        return this->value == obj;
    };
......




  • 2: c++ 操作符的重載繼承問題,所有可重載的操作符都支持繼承,除了賦值運算符,c++有一些特殊的函數(shù)是不能被繼承的,有一部分編譯器會自動生成默認的函數(shù),覆蓋繼承的函數(shù),這部分特殊的函數(shù)包括:構造函數(shù),析構函數(shù) 還有c++標準沒有提到的,c++編譯器會自動生成覆蓋繼承來的 賦值運算符重載,所以當你想通過面向對象來封裝運算符重載時,別忘了在派生類中重新重載賦值運算符.




  • 3 如果你想用自定義數(shù)據(jù)類型重載賦值運算符,那你得用隱式轉換,直接重載賦值操作符,這又是什么騷操作? 看下面代碼:

老子明明重載了賦值運算符,可是在賦值時依然報錯
Boolean .cpp

#include "../operator/BoolOperator.h"

class Boolean : public BoolOperator<bool, Boolean> {
public:

    Boolean& operator=(bool b) {
        this->value = b;
        return *this;
    };
};

main.cpp

#include "dependency/dependency.h"
using namespace std;

int main() {
    Boolean b = false; //這里運算符報錯 
    return 0;
}

Boolean .cpp 必須要這樣寫,用隱式轉換

#include "../operator/BoolOperator.h"

class Boolean : public BoolOperator<bool, Boolean> {
public:
    Boolean(const bool b) {
        this->value = b;
    };
};

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拓哟,隨后出現(xiàn)的幾起案子往踢,更是在濱河造成了極大的恐慌,老刑警劉巖贵少,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異堆缘,居然都是意外死亡滔灶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門吼肥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來录平,“玉大人,你說我怎么就攤上這事缀皱《氛猓” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵啤斗,是天一觀的道長表箭。 經(jīng)常有香客問我,道長钮莲,這世上最難降的妖魔是什么免钻? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮崔拥,結果婚禮上极舔,老公的妹妹穿的比我還像新娘。我一直安慰自己链瓦,他們只是感情好拆魏,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著慈俯,像睡著了一般渤刃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肥卡,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天溪掀,我揣著相機與錄音,去河邊找鬼步鉴。 笑死揪胃,一個胖子當著我的面吹牛璃哟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喊递,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼随闪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了骚勘?” 一聲冷哼從身側響起铐伴,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俏讹,沒想到半個月后当宴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡泽疆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年户矢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殉疼。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡梯浪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瓢娜,到底是詐尸還是另有隱情挂洛,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布眠砾,位于F島的核電站虏劲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏荠藤。R本人自食惡果不足惜伙单,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哈肖。 院中可真熱鬧,春花似錦念秧、人聲如沸淤井。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽币狠。三九已至,卻和暖如春砾层,著一層夾襖步出監(jiān)牢的瞬間漩绵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工肛炮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留止吐,地道東北人宝踪。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像碍扔,于是被迫代替她去往敵國和親瘩燥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

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

  • 3. 類設計者工具 3.1 拷貝控制 五種函數(shù)拷貝構造函數(shù)拷貝賦值運算符移動構造函數(shù)移動賦值運算符析構函數(shù)拷貝和移...
    王偵閱讀 1,813評論 0 1
  • 重新系統(tǒng)學習下C++不同;但是還是少了好多知識點厉膀;socket;unix二拐;stl服鹅;boost等; C++ 教程 | 菜...
    kakukeme閱讀 19,939評論 0 50
  • C++ Primer Plus C++百新,貝爾實驗室Bjarne Stroustrup設計的編程語言菱魔。C++ Pri...
    gb_QA_log閱讀 1,247評論 0 1
  • C++ 是 C 語言的超集,它是一種使用非常廣泛的計算機編程語言吟孙。C++ 作為一種靜態(tài)數(shù)據(jù)類型檢查的澜倦、支持多范型的...
    神齊閱讀 903評論 0 1
  • C++類和對象 C++ 在 C 語言的基礎上增加了面向對象編程,C++ 支持面向對象程序設計杰妓。類是 C++ 的核心...
    863cda997e42閱讀 661評論 0 4