Time of Update: 2018-07-25
C++ explicit關鍵字的作用主要是用來修飾類的建構函式,表明該建構函式是顯式的,禁止單參數建構函式的隱式轉換。 如果C++類的建構函式有一個參數,那麼在編譯的時候就會有一個預設的轉換操作:將該建構函式對應資料類型的資料轉換為該類對象,如下面所示: class MyClass { public: MyClass(int num); } MyClass obj = 10; //ok, convert int to MyClass
Time of Update: 2018-07-25
使用visual studio命令提示查看C++記憶體布局 http://blog.csdn.net/daydreamingboy/article/details/8982563 對於學習記憶體布局而言,學會了這個工具,就好像學算術的人會使用了計算機。另外,gcc/g++的話, 可用-fdump-class-hierarchy選項。 來自對《深度探索C++物件模型 侯捷譯》的一點總結、體會。 Only one
Time of Update: 2018-07-25
http://bbs.csdn.net/topics/390299079 前段時間感興趣研究新浪微博C++介面。有oauth1.0與oauth2.0. 其中1.0已經不被支援,所以使用了0.2.地址在這裡。 發現它是使用vs2008,而我使用的工具是vs2010,轉換不過來(不知道為什麼,oauth1.0的可以正確轉換為vs2010).看它的結構設計是支援跨平台的,所以想也把它按我以前跨平台的組織方式重新組織一下。故有了如下項目(已測試win+linux正常)。
Time of Update: 2018-07-25
友元不能被繼承:即,基類的友元未必是子類的友元;某類型的友元的子類未必是此類型的友元。 詳細的,可以看以下兩節: What does it mean that "friendship isn't inherited, transitive, or reciprocal"? Just because I grant you friendship access to me doesn't automaticallygrant your kids
Time of Update: 2018-07-25
//友元關係的雙向都是不可繼承的#include<iostream>class Base{ friend class Frnd;protected: int i;};class D1 : public Base{protected: int j;};class Frnd{public: int mem(Base b) { return b.i; }//ok int mem(D1 d) { return d.i; }//ok //int mem(D1 d) { return d.j;
Time of Update: 2018-07-25
1,友元函數的定義和作用 我們已知道類具有封裝和資訊隱藏的特性。只有類的成員函數才能訪問類的私人成員,程式中的其他函數是無法訪問私人成員的。非成員函數可以訪問類中的公有成員,但是如果將資料成員都定義為公有的,這又破壞了隱藏的特性。另外,應該看到在某些情況下,特別是在對某些成員函數多次調用時,由於參數傳遞,類型檢查和安全性檢查等都需要時間開銷,而影響程式的運行效率。
Time of Update: 2018-07-25
記憶體流失是編程中常常見到的一個問題,我所遇過的原因有兩個: 1.分配完記憶體後忘記回收 2.代碼有問題,造成想回收卻無法回收,例如: int * p = new int ; p = new int ; // p指標修改,原來申請記憶體的地址沒有記錄下來,於是無法釋放
Time of Update: 2018-07-25
如果你是用Visual Studio內建的打包項目打包了一個Installer,並且產生的.msi和setup.exe安裝檔案,並且在項目安裝系統必備環境中選擇了"Visual C++ 2010運行庫(x86)",那你一定會發現,點擊setup.exe安裝以後,如果再次點擊setup.exe安裝檔案,一定會需要再次安裝C++運行環境,好像每次都不能通過C++已安裝的前提條件。 原因是,居然是微軟的C++運行環境產品Product Code改了。 解決方案如下
Time of Update: 2018-07-25
C# 檢查網路是否串連 在網上查到有幾種方式檢查網路是否串連,測試了一下,第一種方式受到ping時延的影響,在某些不支援ping的地址或者網段甚至不可用,因此建議採用方法2 1. 調用 cmd 中的 ping 命令,分析輸出資訊來確定網路是否串連
Time of Update: 2018-07-25
const 常量 定義義後就不能被修改,所以定義時必須初始化:const std::string hi = "hello!"; const 對象範圍 在全域範圍定義的非const對象在整個程式中都可以訪問,預設為extern. [code1] const對象預設為檔案的局部變數,要使const變數能夠在其他的檔案中訪問,必須地指定它為extern. [code2]
Time of Update: 2018-07-25
求一個組合,如C(16,3),我們可以通過公式求出這有多少個數,但怎麼把這些數表示出來呢。 代碼: #include<iostream>#include<stdio.h>#define MAXN 100using namespace std;int a[MAXN];int count=0;void assem(int m,int k){ int i,j; for (i=m;i>=k;i--) { a[k]=i;
Time of Update: 2018-07-25
現在越來越發現單元測試在實際做項目時多麼的重要,否則bug不斷,不僅浪費自己的時間,更重要的是給其他人也帶來了極大地不方便。 感覺boost提供的單元測試還是不錯的,也相對比較簡單。 如果要寫多個測試案例,可以如下: file1.cpp #include <boost/test/unit_test.cpp> .... BOOST_AUTO_TEST_SUITE(file1_test_suite) BOOST_AUTO_TEST_CASE(freader_test) { .
Time of Update: 2018-07-25
從左邊的【工具箱】中向設計表單拖放1個Label控制項,然後在縱向複製1個Label控制項,接著依次對2個Label控制項的【Text】屬性進行修改,分別修改為“使用者名稱:"、“密碼”。 從【工具箱】中拖放兩個TextBox控制項將它們分別放在對應的Label控制項的右邊,TextBox2(密碼)的屬性passwordchar改* 密碼就會被*隱藏
Time of Update: 2018-07-25
複製控制 定義一個新類型的時候,需要顯式或隱式地指定複製、賦值和撤銷該類型的對象時會發生什麼,這是通過定義特殊成員:複製建構函式、賦值操作符和 解構函式來達到的。如果沒有顯式定義複製建構函式或賦值操作符,編譯器(通常)會為我們定義。複製建構函式、賦值操作符和解構函式總稱為複製控制。編譯器自動實現這些操作,但類也可以定義自己的版本。
Time of Update: 2018-07-25
編程過程中,有時候需要判斷主機是否線上,最簡單的方法就是使用Windows的Ping命令看看能否ping通。看到網上很多文章,說用C#去調用windows的ping.exe,然後解析返回的字串。我覺得這種方式太麻煩了,就做一下簡單判斷,不想弄那麼麻煩。 查了一下,C#專門提供了一個Ping類,與Windows下的ping命令類似: 命令空間: System.Net.NetworkInformation; 使用方法: bool online = false; //是否線上Ping
Time of Update: 2018-07-25
建構函式 建構函式是特殊的成員函數,只要建立類類型的新對象,都要執行建構函式。 一個類聲明的建構函式的數量沒有限制,只要每個建構函式的形參表是唯一的,實參決定使用哪個建構函式 建構函式不能聲明為 const 與任意的成員函數一樣,建構函式可以定義在類的內部或外部 使用預設實參可以減少代碼的重複 建構函式的執行 初始化階段: 隱式或顯式初始化階段
Time of Update: 2018-07-25
[前篇]C++筆記:物件導向編程基礎 轉換與繼承 衍生類別到基類到自動轉換 衍生類別指標 ----> 基類指標 --/-> 衍生類別指標 衍生類別對象 --/-> 基類對象 --/-> 衍生類別對象 衍生類別對象的引用或指標可以自動轉換為基類子物件的引用或指標。(因為衍生類別對象也是基類對象) 沒有從基類引用或指標到衍生類別引用或指標的自動轉換。(一個基類對象可能是也可能不是一個衍生類別對象的部分)
Time of Update: 2018-07-25
C++筆記:衍生類別到基類轉換到可訪問性 要確定到基類的轉換是否可訪問,可以考慮基類的public成員是否可訪問,如果可以,轉換是可以訪問的,否則,轉換是不可訪問的。 如果是public繼承,則使用者代碼和後代類都可以使用衍生類別到基類的轉換。 如果類是使用private或protected繼承派生的,則使用者代碼不能將衍生類別型對象轉換為基類對象。 如果是private繼承,則從private繼承類派生的類不能轉換為基類。
Time of Update: 2018-07-25
c++11多線程編程之condition_variable 主要從一個問題出發,編寫一個程式,開啟3個線程,這3個線程的ID分別為A、B、C,每個線程將自己的ID在螢幕上列印10遍,要求輸出結果必須按ABC的順序顯示;如:ABCABC….依次遞推。這裡可以用c++11的條件變數來解決問題。涉及到的知識點包括: 1.std::unique_lock 首先介紹unique_lock,這個是一個獨佔鎖,它的建構函式有這樣幾種情況: unique_lock();(1) (since C+
Time of Update: 2018-07-25
近三年藍橋杯試題 1.猜燈謎 2.連續奇數和 3.空白欄框式化 4.高僧鬥法 5.格子刷油漆 6.農場陽光 X星球十分特殊,它的自轉速度與公轉速度相同,所以陽光總是以固定的角度照射。 最近,X星球為發展星際旅遊業,把空間位置出租給Y國遊客來曬太陽。每個租位是漂浮在空中的圓盤形彩雲(圓盤與地面平行)。當然,這會遮擋住部分陽光,被遮擋的土地植物無法生長。 本題的任務是計算某個農場宜於作物生長的土地面積有多大。 輸入資料的第一行包含兩個整數a,