博客 / 列表

圖形學愛好者Wu - 每日一個C++知識點|菱形繼承

繼承是C++面向對象的核心特性之一,説明類與類之間的特性是可以繼承的,這大大提高了代碼的複用性,優化了程序結構。但是濫用繼承也會導致菱形繼承的多繼承問題。 菱形繼承 什麼是菱形繼承呢?指一個派生類同時繼承兩個直接基類,這兩個直接基類又繼承自同一個間接基類,最終形成 “菱形” 的繼承結構。 下面用代碼展示菱形繼承的結構示例: // 頂層基類 class A { public: int a;

觀點 , 教程 , 知識 , c++ , c

圖形學愛好者Wu - 每日一個C++知識點|const和static的區別

const和static是C++編程語言中的常用關鍵字,對於初學者來説可能會混淆,畢竟一個代表“常量”,一個代表“靜態”,都是靜止類的詞彙。 其實這兩者並沒有本質的聯繫,其中const是類型限定符,聚焦於修飾變量的 “不可修改性”; 而static是存儲類説明符,管控變量的存儲位置、生命週期與作用域。 由於const和static是性質不同的關鍵字,下面就分開對兩者進行講解~ const 如果沒有

觀點 , 資訊 , 教程 , 知識 , c++

圖形學愛好者Wu - 每日一個C++知識點|底層內存管理

C++的手動內存管理機制賦予了程序員極高的靈活性,但也帶來了內存泄漏、野指針等風險。本文從內存區分開始,逐步從深入瞭解C++內存的核心知識~ 內存分區 在C++程序運行時,內存會被劃分為五個區域,分別是棧區、堆區、全局/靜態區、常量區和代碼區,如圖所示: 棧區是程序運行中一塊連續的內存區域,主要用來存儲局部變量,由編譯器自動分配和釋放,空間小但速度快 堆區是程序運行時由程序員手動分配和釋放

觀點 , 資訊 , 教程 , 知識 , c++

圖形學愛好者Wu - 每日一個C++知識點|對象資源傳遞機制

C++是一門對內存資源配置要求較高的語言,其中對象資源傳遞在C++開發中無處不在,下面我將在淺拷貝、深拷貝、左值右值、移動語義、完美轉發這5個方面層層遞進地講解C++對象資源傳遞機制,爭取做到知識串聯,深入淺出~ 淺拷貝 我們從一個實際場景入手:寫一個Image類,存儲圖片的像素數據,代碼如下: #include iostream using namespace std; // 圖片類:管理堆內

觀點 , 資訊 , 教程 , 知識 , c++

圖形學愛好者Wu - 每日一個C++知識點|模板

什麼是模板 C++ 是一門多範式的編程語言,除了面向對象的特點之外,還具備泛型編程的特點,其中模板是泛型編程的核心工具 模板是一份與類型無關的通用代碼,編譯器會根據你傳入的類型,自動推導和生成對應類型的具體代碼,這個過程叫 “模板實例化”,其中模板包括函數模板和類模板 函數模板 如果不使用函數模板,實現兩個值交換的函數,會根據傳入參數的數據類型不同會有以下幾種情況: #include iostre

觀點 , 教程 , 知識 , c++ , 爬蟲

圖形學愛好者Wu - 每日一個C++知識點|面向對象之多態

C++面向對象的三大特性是封裝,繼承,多態。上兩篇文章分別討論了封裝和繼承,今天主要是講解C++的另一個面向對象的特性~~多態 多態的概念 什麼是多態呢? 多態的核心是"同一個接口,不同的實現" 簡單來説,就是調用同一個函數名,程序會根據上下文和調用對象的實際類型來自動執行對應的函數邏輯,後面我們將會用代碼來舉例説明 多態的分類 C++多態分為靜態多態和動態多態 靜態多態 靜態多態是編

觀點 , 資訊 , 教程 , 知識 , c++

圖形學愛好者Wu - 每日一個C++知識點|面向對象之繼承

C++面向對象有三大特性:封裝, 繼承, 多態 上一篇文章我們主要講了C++面向對象的封裝特性, 瞭解了類和對象, 今天我們來講解繼承這個特性, 進一步瞭解類之間的關係 在現實生活中,兒子可以繼承父母的財產, 在編程世界裏, 有子類和父類, 子類可以繼承父類的特性, 這就是C++面向對象的特性之一繼承 父類和子類 父類, 也叫基類, 是被繼承的類 子類, 也叫派生類, 繼承父類的類 下面用簡

觀點 , 教程 , 知識 , c++ , 程序員

圖形學愛好者Wu - 每日一個C++知識點|面向對象之封裝

面向對象是C++編程語言的重要特徵, 也是C++與C語言顯著區別的重要標誌, 那什麼是面向對象呢? 什麼是面向對象 這裏的對象並不是指我們的男女朋友, 而是由"Object"所翻譯, 指的是具體的物體, 與之相對應的是抽象的類, 類和對象的關係就是物體的普遍性和特殊性的關係, 即一般與個別的關係, 把類轉換成對象的過程叫實例化 C++面向對象主要分成三個模塊,分別是封裝,繼承和多態 封裝 封裝就是

觀點 , 教程 , c++

圖形學愛好者Wu - 每日一個C++知識點|原子操作

上一篇文章講了C++多線程的基礎知識, 今天我們來講講原子操作, 原子操作也是C++多線程的主要內容 什麼是原子操作 什麼是原子操作呢? 就是一個操作執行像原子一樣不可再分割, 在多線程環境中就不會被其他線程打斷, 因而就會保證某個操作執行的連續性和完整性 也就是説,一個操作要麼全部執行完畢,要麼完全不執行 如果沒有原子操作 如果沒有原子操作的話, 在多線程環境中會導致數據讀寫混亂, 下面讓我們用

編程 , 原子操作 , c++ , 多線程 , 程序員

圖形學愛好者Wu - 每日一個C++知識點|多線程基礎

多線程開發場景基本是每一個C++開發工程師無法避免的場景,今天就帶大家從零基礎入門C++多線程編程,掌握其中的基礎用法、鎖管理工具和條件變量的內容 多線程的認識 多線程就是一個程序內部運行多個任務,每個任務就是一個線程,充分利用CPU的資源,提高效率的技術 在多個線程中,作為程序入口的線程稱為主線程,由主線程創建負責獨立執行細分任務的線程稱為子線程 實現依賴 在C++中想使用多線程技術,就要引入頭

c++

圖形學愛好者Wu - 每日分享一個C++知識點☞析構函數

每日分享一個C++知識點☞析構函數 在C++中,對象有生命週期: 創建時調用構造函數,銷燬前調用析構函數。 很多人重視構造,卻忽略析構。 結果就是:內存泄漏、資源未釋放、程序越跑越慢。 今天就把析構函數説清楚。 什麼是析構函數? 它是類的一個特殊成員函數,作用是: 👉 在對象被銷燬前,自動執行清理工作。 比如釋放 new 出來的內存、關閉文件、斷開連接等。 基本規則 函

程序員