原创 【總結】C++靜態成員函數及測試用例

1.靜態成員函數可以用普通函數指針儲存,普通成員函數必須用類函數指針儲存class A { public: static void fun() { cout << "hello world" << endl; } public:

原创 【探索】VS下虛繼承實現的方法-1

    C++的虛繼承主要解決了數據冗餘與二義性的問題,起實現方法是什麼呢,我們先看一段代碼。#include<iostream> using namespace std; class A { public: int _num; };

原创 【總結】C++靜態成員變量的特性總結及測試用例

    靜態成員變量存放於數據段,在編譯時產生,故有以下特性:    靜態成員變量實際爲類域中的全局變量,其初始化也應與全局變量一樣,不能再頭文件裏初始化,應與全局變量初始化的方式一樣,初始化時,靜態成員變量不收訪問限定符限定Test.c

原创 【總結】C++靜態成員變量的特性總結及測試用例

    靜態成員變量存放於數據段,在編譯時產生,故有以下特性:    靜態成員變量實際爲類域中的全局變量,其初始化也應與全局變量一樣,不能再頭文件裏初始化,應與全局變量初始化的方式一樣,初始化時,靜態成員變量不收訪問限定符限定Test.c

原创 如何限制類僅能創建一個對象

方法一:利用引用計數:#include <iostream>   using namespace  std;      class  Object   {      public:             ~Object()       

原创 C++單鏈表的設計與實現

    單鏈表是一種常見的數據結構,c++不同於C的語言特性是封裝、繼承和多態。若要實現單鏈表,首先我們要明確什麼是單鏈表,鏈表是由一個或多個節點構成的,實現鏈表的數據結構,我們首先是要明確的是什麼是節點。    節點是由數據+該節點類型

原创 String類的實現與深淺拷貝問題

    C++實現string類是理解類和對象這個概念的基礎,也能瞭解C++語法的特性--用戶對內存的自主管理,通過類創建出一個對象的過程,首先要調用構造函數,經過一系列的操作,當退出對象所在的作用域時,便會調用析構函數,C++支持隱式的

原创 【探索】VS下實現虛繼承的方法-2

    上篇講到VS下實現虛繼承中成員變量的二義性與數據冗餘的解決方案是怎樣的,今天我們來看看虛繼承的成員函數會如何。    首先,虛繼承會不會重寫成員函數?我們看一看如下代碼:#include<iostream> using namesp

原创 【總結】C++基類與派生類的賦值兼容規則

    在初步探索了C++繼承的語言特性之後,總結下其賦值兼容規則:1.子類對象可以賦值給父類對象(切割/切片)    在公有繼承的前提下,子類是可以賦值給父類對象的,爲什麼是共有繼承(public),因爲公有繼承會產生“is-a”的關係,

原创 【C語言位運算的應用】如何按bit位翻轉一個無符號整型

    其實現思路如下:    將目標數值進行末尾比特位摘取,將所摘取的bit位放到一個相同類型的末尾,目標數值bit位右移,相同類型bit位左移。    C語言的位運算符:650) this.width=650;" src="http:

原创 【總結】逆置雙向鏈表的三種方法

    雙向鏈表的遍歷要比單向鏈表方便很多,所以逆置方法要比單鏈表豐富很多,因爲可以從後向前遍歷,所以可以像逆置數組一樣進行操作,也可以根據單鏈表的特性進行逆置,也可以用雙鏈表獨有的特性進行逆置。具體方法如下:    鏈表的類定義如下:t

原创 【乾貨】C++通過模板特化實現類型萃取實例--實現區分基本類型與自定義類型的memcpy

    類型萃取是一種常用的編程技巧,其目的是實現不同類型數據面對同一函數實現不同的操作,如STL中cout的實現,它與類封裝的區別是,我們並不用知道我們所調用的對象是什麼類型,類型萃取是編譯器後知道類型,先實現,而類的封裝則是先定義類型

原创 【代碼】模板實現雙向鏈表的去重、拼接、合併、排序

/* 模板實現雙向鏈表的去重、拼接、合併、排序 */ #pragma once #include<iostream> template <class T> struct Node { T _data; Node<T> *_next;

原创 【一張大大的圖片】類和對象知識點總結

    自己寫的如果有什麼不足或者是錯誤,希望指出,謝謝!

原创 【乾貨】share智能指針的模擬實現

    智能指針是C++實現自動內存管理的一種手段,本質是通過對象出作用域會自動析構,讓對象保存與所需管理的目標指針指向同一片動態開闢空間的地址,出作用域會自動析構。這裏模擬了,boost中的share智能指針,代碼如下:#pragma o