Time of Update: 2018-12-03
1. 建構函式一般應用一個建構函式初始化列表來初始化對象的資料成員。2. 建構函式不能為const。3. 可以認為夠在函數分兩個階段執行:(1)初始化階段;(2)普通計算階段,計算階段由建構函式函數體中所有語句組成。4. 不管成員是否在建構函式初始化列表中顯示初始化,類類型的資料成員總是在初始化階段初始化,初始化發生在計算階段開始之前。5. 使用建構函式初始化列表的版本初始化資料成員,沒有定義初始化列表的建構函式版本在建構函式函數體中對資料成員賦值。6.
Time of Update: 2018-12-03
C++ Primer(4 edition) 中文版P407上說:“複製初始化首先使用指定建構函式建立一個臨時對象,然後用複製建構函式將那個臨時對象複製到正在建立的對象。”但我的實驗結果顯示是沒有調用複製建構函式。 我做了個實驗(實驗1),首先寫了一個簡單的類,裡面提供一個預設建構函式,一個接受單個形參的建構函式,一個複製建構函式和一個=重載函數,在上面每個函數中都列印一個訊息,提示這個函數正在被調用。
Time of Update: 2018-12-03
今天在看C++ Primer,寫重載操作運算子練習程式的時候,在成員函數中直接操作形參中同類型對象的private成員,程式如下:OperatorOverload& OperatorOverload::operator=(const OperatorOverload &op){m_nNum1 = op.m_nNum1;//op.getNum1(); m_nNum1為privatem_nNum2 = op.m_nNum2;//op.getNum2();
Time of Update: 2018-12-03
起因今天九度刷題的時候,發現一個不調用任何c的庫函數實現字串拼接的代碼很多人寫的過於複雜,鏈表都用上了,真的不至於,只要知道字串的最後截止符是'\0'.題目描述:不借用任何字串庫函數實現無冗餘地接受兩個字串,然後把它們無冗餘的串連起來。輸入:每一行包括兩個字串,長度不超過100。輸出:可能有多組測試資料,對於每組資料,不借用任何字串庫函數實現無冗餘地接受兩個字串,然後把它們無冗餘的串連起來。輸出串連後的字串。範例輸入:abc def範例輸出:abcdef直接上我的AC代碼吧#include
Time of Update: 2018-12-03
1.起因今天在acm刷題的時候,之前的排序演算法一直都是冒泡,可能九度OJ的難度題考察的都是快速排序,導致我都是死在time
Time of Update: 2018-12-03
前言在九度oj做acm的時候,經常會遇到了char類型和int類型相互轉化的問題,這裡進行一下總結。今後,可能會多次更新部落格,因為半年做了很多總結,但是都是儲存在word文檔上了,現在開始慢慢向CSDN部落格轉移。問題類型char型數字轉換為int型轉換方法a[i] - '0'參考程式#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){char str[10];int i,
Time of Update: 2018-12-03
因為虛擬函數的地址翻譯取決於對象的記憶體位址,而不取決於資料類型(編譯器對函數調用的合法性檢查取決於資料類型)。原來,如果類中定義了虛擬函數,該類及其衍生類別就要產生一張虛函數表,即vtable。而在類的對象地址空間中儲存一個該虛函數表的入口,佔4個位元組,這個入口地址是在構造對象是由編譯器寫入的。 有如下C++程式://#include<stdio.h>#include<iostream>using namespace std;class CMem{public:
Time of Update: 2018-12-03
偉大的Bill Gates 曾經失言: 640K ought to be enough for everybody — Bill Gates
Time of Update: 2018-12-03
1.大小寫不敏感的string類..可以看一下char_traits的定義,仿照定義一個自己的模版類,改寫static bool __cdecl eq(const _Elem& _Left, const _Elem& _Right) { if(_Left == _Right) return true; else{ _Elem maxElem = max(_Left, _Right); _Elem minElem = (_Left+_Right)-maxElem;
Time of Update: 2018-12-03
C語言中String庫函數以下內容摘自《C程式設計教程》(美)H.M.Deitel P.J.Deitel著,薛萬鵬等譯,機械工業出版社。void *memccpy (void *dest, const void *src, int c, size_t n);從src所指向的對象複製n個字元到dest所指向的對象中。如果複製過程中遇到了字元c則停止複製,返回指標指向dest中字元c的下一個位置;否則返回NULL。void *memcpy (void *dest, const void *src,
Time of Update: 2018-12-03
下面是<<C和指標>>上一道簡單程式題目如下:編寫一個程式,從標準輸入讀取幾行輸入。每行輸入要列印到標準輸出上,前面要加上行號。在編寫這個程式時要試圖讓程式能夠處理的的長度沒有限制。題目分析:通過從輸入中逐個字元讀取而不是逐行讀取,可以避免行長度限制。在這個解決方案中,如果定義了TRUE和FALSE符號,程式的可讀性會更好一些**//********從標準輸入複製到標準輸出,並輸出行標號********/#include<stdio.h>#include<
Time of Update: 2018-12-03
“該死系統存在記憶體流失問題”,項目中由於各方面因素,總是有人抱怨存在記憶體流失,系統長時間運行之後,可用記憶體越來越少,甚至導致了某些服務失敗。記憶體流失是最難發現的常見錯誤之一,因為除非用完記憶體或調用malloc失敗,否則都不會導致任何問題。實際上,使用C/C++這類沒有記憶體回收機制的語言時,你很多時間都花在處理如何正確釋放記憶體上。如果程式已耗用時間足夠長,如後台進程運行在伺服器上,只要伺服器不宕機就一直運行,一個小小的失誤也會對程式造成重大的影響,如造成某些關鍵服務失敗。對於記憶體流
Time of Update: 2018-12-03
RTT的學習集中在應用程式層,底層的代碼會在必要的時候涉及一下。 startup是RTT的啟動代碼,類似於ucos。 void rtthread_startup(void){ /* init board */ rt_hw_board_init(); /* show version */ rt_show_version(); /* init tick */ rt_system_tick_init(); /* init kernel object */
Time of Update: 2018-12-03
暑假比較虛度,看著案頭各種繁雜,就想設計一個軟體系統,能直接像捷徑功能表那樣開啟的,於是便寫了如下一款作品,平台vs2008,語言C#【】 核心代碼:private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { this.process.StartInfo.Verb = "Open";
Time of Update: 2018-12-03
1.C語言聲明的單獨文法成份 聲明器是C語言聲明的非常重要成份,他是所有聲明的核心內容,簡單的說:聲明器就是標識符以及與它組合在一起的任何指標、函數括弧、數組下表等,為了方便起見這裡進行分類表示。 1)指標 (1)* (2)* const (3)* volatile (4)* const volatile (5)* volatile const 2)直接聲明器 (1)標識符 (2)標識符[下表] (3)標識符(參數)
Time of Update: 2018-12-03
C++是一種物件導向的程式設計語言,我們常用它來進行物件導向的程式開發。但是,面向過程的語言如C是否可以進行物件導向的編程呢?答案是肯定的。C語言雖然沒有物件導向語言的諸多特徵,包括其核心特徵即封裝、繼承和多態,但是我們都知道,物件導向編程的實質其實是一種編程思維方式,跟使用的語言並無必然關係,但是使用物件導向的語言可以使程式員更好地實現這一思維方式。“
Time of Update: 2018-12-03
最近一直在做一個項目,主要是將原本symbian c++寫的工程移植為qt版本。這其中遇到N多問題,自己也鮮有總結,接下來幾篇文章就總結一下這其中的一些方法經驗和教訓,大家一起交流。 symbian發展到symbian3和symbian4之後:原本的symbian c++生存空間越來越小,而qt將最終成為主要的趨勢。所以原本很多用symbian c++寫的項目都面臨著一個問題:要麼最新版本全部推倒用qt重寫,要麼做移植。 可能很多人會說:symbian
Time of Update: 2018-12-03
該篇講一些移植項目進展中出現的問題: 1:我們移植出最初版本之後,別組同事拿去參考,於是他們也搭建了環境,拉下代碼,編譯也通過,但是emulator下案頭點擊表徵圖都沒反應,也不報錯,這原因何在?當在emulator中點擊運行一個程式結果毫無反應時:主要有以下幾個原因 ①缺相應的dll庫,也許你的工程要用到很多自己寫的dll庫,結果缺失或者拷貝不到位,導致exe無法找到,從而啟動不了。 ②版本不對,比如原本開發是用的qt-mobility1.0.2,
Time of Update: 2018-12-03
在學校學C的那會兒,就已經知道switch...case的執行效率要相對if...else較高了(大體上講),因為從字面上和邏輯上看,switch...case是不用像if...else那樣做一系列比較判斷就可以直接定位到相應的條件分支的。不過也沒有深究過其中的原理。後來由於一偶然原因,就明白了其中的細節。今日碰巧看到一篇blog,是講作者對此問題的思考,我覺得作者的理解大體上都是對的,不過下面跟帖的人,有人鄙夷,有人諷刺,實在是影響網容網貌,對作者本人也是沒有起碼的尊重,無法建立起平等的溝通,
Time of Update: 2018-12-03
看了書後,照著書上的方法一步一步去做,卻失敗了,555真是的,寫書的人啊,卻不考慮一下細節問題建立一個目錄[liu@liu-desktop hellomod]$mddir hellomod[liu@liu-desktop hellomod]$cd hellomod[liu@liu-desktop hellomod]$vi hellomod.c/****************hellomod.c*******************************/#include <linux/