青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

沐楓小筑(C++)

愛老婆,要比編程多一點...

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  18 Posts :: 0 Stories :: 84 Comments :: 0 Trackbacks

公告

沐楓的個人主頁

eoool.com生成

eoool.com生成

常用鏈接

留言簿(8)

我參與的團隊

搜索

  •  

積分與排名

  • 積分 - 57501
  • 排名 - 404

最新評論

閱讀排行榜

評論排行榜

共2頁: 1 2 
re: Run time type Information 沐楓 2006-07-04 14:53
好。
還不知道dynamic_cast<void*>()能轉換成真實類型的指針。有這個功能,真太好了。
等C++0x出來后,就可以用:
auto pv = dynamic_cast<void*>(...)來獲取真實類型了。
感覺上,
C/C++象是藍領,.NET/Java象是白領
C/C++象是做苦力,.NET/Java象是Office
re: 為什么main有多種格式? 沐楓 2006-06-09 09:13
cdecl調用規范是c語言特有的。

例如有函數: int f(int,...)
r = f(a1,a2,a3,a4)

它動作如下:
1. 調用方,先把參數按從后面到前面的順序壓棧。
--> 為什么這么做?為了實現可變參數。特別是為main和printf所做的工作。
.... 如上面的f,在調用時按a4,a3,a2,a1順序壓棧。即使參數無數個,也不會影響函數的實現。
2. 調用方,負責清理棧空間
--> 為什么這么做?因為到底壓了多少個參數在棧里頭,只有調用方才知道。
3. 返回值,一概放到規定的寄存器中。
--> 為什么這么做?這樣可以允許不使用返回值,寄存器不占用存儲空間,不用關心內存資源問題。

小結:使用了cdecl,c語言就可以只關心函數名,而不再關心參數個數,參數類型,函數的返回值問題。因此,一個函數名,僅僅表示了函數的入口,而c語言中的函數原型,僅僅是為了讓編譯器生成相應的調用代碼。
因此,對于一個函數而言,函數原型,愛怎么定義就怎么定義,編譯器和鏈接器都不會怪你;后果就是,如果原型定義有問題,運行結果要么是錯的,要么程序甚至系統崩潰。

課后提問:在C中,能否返回結構體呢?
re: Google為什么會被封鎖? 沐楓 2006-06-01 08:58
gmail我還一直在用啊。什么時候有封過,我怎么不知道?
re: resource dll 沐楓 2006-05-25 13:42
這個模板把內容都遮住了。
另外,對于樓主的例子,還是不要有返回值的好。因為這容易引起誤用。函數的用戶常常會以為SetName返回的是未設置以前的值,而不是錯誤與否。
re: 指針數組和數組指針 沐楓 2006-05-22 09:18
其實,C/C++等編程語言之所以難懂,是因為,中國人特別是有點文化的人,素來喜歡用簡化語。

就象某年春晚相聲中,將簡化語大做批判,其中“上海吊車廠的人員”簡稱為“上吊的”一樣。

指針數組和數組指針,簡化的象術語一樣。C/C++本來就沒有那么多的術語,人為增加術語,只會使C/C++更加晦澀難懂。

直接稱呼全稱,估計問題就解決了:
用于存儲指針的數組、指向數組的指針
re: 把代碼移植成UNICODE 沐楓 2006-05-19 09:47
狂暈。看了半天,來了一句“失敗”!!!
從目前來看,用異常,在OOP方面已經很普遍了。
它對于棧展開,對象自我析構,和資源管理方面可以做得很好。
另外,在C++中,應使用bool代替BOOL。
AJAX(Asynchronous JavaScript and XML)的名字已經對這些東西說的很明白了。
AJAX在技術方面并非新東西,而是將近幾年的技術做一個總結。
因此,雖說有炒作,但更多的是,對用戶體驗的重視。
看了很感動。
眼看著你就畢業了,我想兩年內,你們的家就會因為你的奮斗而更加的幸福。
正想說呢,結果被樓上先說了。:)

看來M$的宣傳到位啊。這么多難用的方法(最后一個還算不錯),樓主都知道了,就是不知道標準C庫的方法。
C++并不能帶來更多的效率。主要還是程序(員)本身。
@萬連文
低端嵌入式,還是匯編和C。
中端嵌入式,是C和C++。
高端的,一般是C/C++,Java,.NET。
@christanxw
并非如此。
傳奇是delphi,許多小游戲是javaApplet和Flash,已經有.NET和Java的大型游戲和網絡游戲。手機游戲相當多是用.NET和Java,一部份用C++。
另外,C/C++做的游戲也需要腳本。
越往后,C/C++做游戲的優勢也越小。
估計遇到這樣的for語句,在某些大公司是會被警告直至走人的。
干嘛非要放到括號里完成呢?

另外,字符數組你這程序是不能用的。
我給你一個測試用例:
char arr[5] = {'H', 'e', 'l', 'l', 'o'};

----------
BTW,你如果要指定是C++,那么,C++中已經有reverse函數(頭文件algorithm):
reverse(str, str+strlen(str)-1);
而交換變量,也有swap函數(頭文件algorithm):
swap(*head++, *tail--);
re: Is it a vc6 bug? 沐楓 2006-04-25 08:58
這個語句,無論如何都不能說是編譯器的bug。
根據編譯器實現的不同,可以有不同的結果。

特別是優化過以后,有可能先執行 b=a,再執行 (a+b)-b。這是最優化的。
當然也可能是先執行(a+b),再執行 (b=a),再執行 (a+b)-b。

規則:在同一條語句中不要讓發生改變的變量出現多次。
re: 我們為何從不參與? 沐楓 2006-04-24 11:29
和能力無關。
一是拿來主義
二是英文不好
char* revstr(char* str){
  char* head = str;
  char* tail = head + strlen(head) -1;
  while(head < tail) {
    char c = *head;
    *head++ = *tail;
    *tail-- = c;
  }
  return str;
}
代碼風格應該受到批評。
就這么幾行的程序,就讓人看得難以理解--特別是那個恐怖的for.
而且就本程序來說,沒必要另外分配一個內存。

BTW: //Feature: This version is suitable for both sring and array
這個更離譜了,string還好說,array如何能用呢?
參考小文:http://ly4cn.cnblogs.com/archive/2006/04/06/368210.html
里面的MASM是6.14,不知道vc6帶的是不是這個版本?(可以dos下打入ml 查看)。
如果是的話,就可以在嵌入匯編中使用文中的api定義和調用了。
這就非常方便。
你那是C語言。只不過是把malloc用new來替代罷了。
真正的C語言(C99)是支持動態數組的,如:

void func(int N)
{
int arr[N][N] = {0};
...
}

對于C++來說,則:
void func(int N)
{
vector<vector<int> > arr(N);
for_each(arr.begin(), arr.end(), bind2nd(mem_fun_ref(&vector<int>::resize), N));
...
}
re: 幻方,呵呵學習學習 沐楓 2006-04-10 09:03
int ** arr = new int * [N];
for (i = 0 ;i < N;i ++ )
arr[i] = new int [N];
for (i = 0 ;i < N;i ++ )
for (j = 0 ;j < N;j ++ )
arr[i][j] = 0 ;

好可怕的數據結構和初始化!!!
re: 對MFC8.1的白日夢 沐楓 2006-04-10 08:47
MS多少年沒有對mfc的結構做大的變動了?再加上現在的重點是放在.NET以及新一代的應用程序框架上(這里要罵一句,好象新的框架只能用在vista上),估計MFC即使升到9.0也仍然是修修補補。沒戲。
2005也不行。
因為無論如何都不知道如何給出一個int的值。
從這一點來說,gcc不知道會把damn實例化成什么,damn<0>嗎?
"通過使操作系統更安全、更可靠、響應更及時,使人們更自信 "
更安全可靠不去評論。

響應更及時,估計要靠硬件來支持,從這一點來說,這不是MS的功勞,而應該是錢包的功勞吧。也正因為是錢包的功勞,所以人們才更自信。。。
我沒看到onsize,只看到oncreate,是不是樓主寫錯了?
re: 一段關于memcpy的代碼 沐楓 2006-04-01 09:46
個人覺得很難優化。因為每個字節拷貝,都要留一個跳轉入口。編譯器又怎么敢私自用8字節操作指令直接優化掉它呢。
由此估計,寫此代碼純粹是為了挑戰C/C++的語法。
re: C#中重用c/c++舊模塊 沐楓 2006-03-31 17:30
@Ninputer
我試過不是這樣的。
我這幾天曾把手頭上的幾個C++項目,一字不改,僅將編譯選項改為/clr,就編譯通過了。并且運行效果完全正常。
用reflector反編譯也成功的看到源碼(只是源碼有點不太好看)。
這幾個項目有些是MFC項目,有些是API項目,都使用了模板和標準庫,以及第三方的DLL。
re: C#中重用c/c++舊模塊 沐楓 2006-03-31 13:21
你這項目要是沒有特殊要求,其實最簡單的方法是,采用C++/CLI來包裝原有的dll或代碼,然后就可以直接讓C#引用了。
甚至可以直接用C++/CLI重編譯原有代碼,只增加一個或若干個接口類給.net引用。極端一點的,干脆不用C#,只用C++/CLI。
這樣的做法是,簡單,快捷,并且完美。甚至可以讓代碼同時擁有本地代碼和托管代碼。從而為反編譯增加最大的難度。
因為不是所有的接口和struct都能很方便的封裝成C#中去。
沒什么講究啦,就是看什么詞容易讓人理解,就是什么詞好。
重載,重寫,和隱藏會不會更好理解一些。
re: 何為仿函數 沐楓 2006-03-24 17:08
“呵呵,可以不用那么的麻煩的。 直接調用就可以了。 你可以試一試。” --@ walkspeed

--我試了,證明是一定要麻煩點,需要多加個括號。
  如你自已的代碼中:ObjectFunction2()(10);而不能ObjectFunction2(10)。而函數就可以。
  不知道你所謂的不用那么麻煩,是如何做到的。

我不是不懂什么對象構造仿函數什么的。只是說,仿函數畢竟不是函數,不能直接調用,這一點和函數是有差別的。
大多不能下載
我以前做了一個doxygen標記的小結,希望有幫助。
http://ly4cn.cnblogs.com/archive/2005/11/23/282637.html
re: 何為仿函數 沐楓 2006-03-24 11:06
d:\test\ttttt\ttttt\ttttt.cpp(25) : error C2440: '<function-style-cast>' : cannot convert from 'int' to 'f'
No constructor could take the source type, or constructor overload resolution was ambiguous

-------------------Source-------------
#include <iostream>
using namespace std;

class f{
public:
void operator()(int x) {
cout << x << endl;
}
};

int _tmain(int argc, _TCHAR* argv[]) {
f(10);//Error 2440
f()(10);//OK

system("Pause");
return 0;
}
re: 何為仿函數 沐楓 2006-03-24 09:03
仿函數和函數畢竟還是不同的。
比如上面的ObjectFunction2,你在調用時應該是:

ObjectFunction2()(10);
這和函數

func(10);
區別還是挺大的。

那vc6的 atlstring 有沒有?我沒裝vc6不好意思。
re: 如何實現不可繼承的類 沐楓 2006-03-22 16:14
@sunny_98

謝謝指出。我在vc2005下試,成功報錯。改天我在vc7.1下再試試。
……這兩個問題總得是剛從C轉到C++的人容易犯的。
由于習慣了C的思維,而又不認真查閱文檔,想當然耳,所犯的錯誤。

特別是第2個問題,不至于要這么用吧,為什么要繞幾個彎呢?
CString str( "123 45" );
CString resToken;

int curPos= 0;
while (curPos != -1)
{
resToken= str.Tokenize(" ", curPos);
cout << (LPCTSTR)resToken << endl;
};

用Tokenize,不會改變源字串。
re: 模板套模板~~ 沐楓 2006-03-22 09:08
typedef一下就不糊涂了。
錯誤不少:
1. *p-- = *q--; // 嚴重錯誤
Fix: *q-- = *p--;
此處是要把插入點之后的字串搬到末尾。末尾的指針是q。
2. s+i-1 // 計算錯誤
Fix: s+i
C/C++字串是從0開始算的,因此,不需要減一。
3. char* s = "Student"; // !!! 極其嚴重的錯誤
Fix: char s[100] = "Student";
作為目的字串,必須預留足夠的空間,并且不能是const.(字串常量類型是const char*)

優化建議:
1. strlen
完全可以避免strlen的調用。strlen在這里極其浪費效率。
 你可以把這個做為練習,繼續優化。
2. void Insert(char *s, char *s1, int i)
原型不好,難以讓人知道哪個是源哪個是目的,并且也不安全。最好改為:
void Insert(char* dst, const char* src, int pos);
re: 從int 到string的幾種方法 沐楓 2006-03-17 23:04
一般傾向于itoa,效率不錯。
而且一般不愛用string而是用字符數組來存放,因為整數轉換的結果不超過10個字符,不管從哪方面來說,都合算。
re: 矩形相含問題 沐楓 2005-11-16 11:08
受教了
re: [GDI+]由彩色到黑白 沐楓 2005-11-16 11:05
能不能加上兩種方法的性能比較。

一般情況下,ColorMatrix的性能比較差(如果直接改象素的程序寫的好的話)。
似乎只要用到ImageAttributes,GDI+性能就大幅下降。很明顯的一點就是:
帶Alpha的圖片顯示
就是比
不帶Alpha而且ColorKey的圖片顯示
來得快得多!
re: C++博客網站正式開通 沐楓 2005-09-07 11:30
在.NET博客注冊了后,如果要發表C++的隨筆, 是不是要在這里再注冊一個?

另外,驗證碼太簡單了,軟件比較容易識別。
最好數字用不同大小,不同的旋轉角度,再加幾條干擾線,再畫出來,這樣就不容易識別了。
共2頁: 1 2 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品国产2020观看福利| 一区二区久久| 亚洲一区二区av电影| 亚洲欧美日韩区| 伊人狠狠色丁香综合尤物| 欧美日本亚洲| 蜜桃久久精品乱码一区二区| 久久精品国产999大香线蕉| 一本久久综合| 欧美国产高潮xxxx1819| 亚洲高清久久| 亚洲激情二区| 亚洲精品人人| 亚洲一区二区在线| 亚洲欧美日韩视频一区| 午夜视频在线观看一区二区三区| 亚洲精品在线看| 一区二区欧美视频| 欧美中文在线观看| 免费在线看一区| 亚洲高清在线播放| 99精品欧美一区二区蜜桃免费| 一级日韩一区在线观看| 亚洲影视在线播放| 久久久久欧美精品| 欧美激情综合色| 欧美视频在线一区二区三区| 国产欧美一级| 亚洲国产精品精华液网站| 国产精品呻吟| 99国内精品| 欧美色网一区二区| 国产在线麻豆精品观看| 亚洲国产高清在线| 欧美在线播放一区| 亚洲精品乱码久久久久久黑人 | 欧美精品导航| 国产一区深夜福利| 亚洲一级片在线观看| 9色国产精品| 亚洲东热激情| 男人的天堂亚洲在线| 国产日韩欧美亚洲| 久久精品国产91精品亚洲| 99国产精品99久久久久久粉嫩 | 亚洲欧美国产精品va在线观看| 久久夜色精品国产噜噜av| 亚洲一区三区视频在线观看 | 美女免费视频一区| 欧美一区高清| 好看的av在线不卡观看| 久久精品一二三区| 欧美在线不卡视频| 在线免费观看欧美| 亚洲欧美日韩国产| 午夜久久黄色| 国产精品免费看久久久香蕉| 亚洲一区二区在线观看视频| 欧美成人免费va影院高清| 欧美高清视频一区| 亚洲婷婷在线| 欧美在线一二三| 亚洲欧美日韩一区二区三区在线| 欧美婷婷在线| 99视频精品在线| 亚洲欧美网站| 亚洲国产1区| 日韩亚洲欧美成人| 欧美+亚洲+精品+三区| 亚洲午夜精品久久久久久浪潮| 亚洲一区二区三区在线看| 国产午夜久久| 欧美不卡高清| 欧美日韩一区三区| 欧美在线视频导航| 欧美日韩精品二区第二页| 麻豆成人在线| 国产视频久久久久| 夜夜爽99久久国产综合精品女不卡| 好看的日韩视频| 亚洲男女自偷自拍图片另类| 一区二区三区精品久久久| 老司机成人在线视频| 久久在线免费观看视频| 国产嫩草一区二区三区在线观看| 香蕉国产精品偷在线观看不卡| 欧美黄色大片网站| 亚洲免费播放| 小辣椒精品导航| 国产日本欧美视频| 欧美在线视频播放| 美女脱光内衣内裤视频久久网站| 国产精品久久久久久av福利软件| 久久精品国产久精国产一老狼| 欧美高清在线视频| 国产在线不卡| 久久精品五月| 亚洲国产精品va在线看黑人动漫| 亚洲一区二区在线观看视频| 在线一区二区日韩| 国产精品久久看| 亚洲免费福利视频| 久久久噜噜噜久久久| 黄色精品在线看| 亚洲欧美日韩另类| 亚洲第一精品夜夜躁人人躁| 久久久精品2019中文字幕神马| 毛片一区二区三区| 中国成人黄色视屏| 亚洲成人在线视频网站| 欧美视频在线观看免费| 一区二区电影免费观看| 欧美不卡高清| 麻豆亚洲精品| 亚洲一区欧美一区| 99re66热这里只有精品4| 国产九九精品视频| 久久婷婷麻豆| 欧美一区二区三区四区高清| 亚洲欧洲精品一区二区| 欧美mv日韩mv国产网站| 美女尤物久久精品| 欧美一区免费| 亚洲电影免费观看高清完整版在线观看 | 国产亚洲欧美一区二区| 欧美喷水视频| 欧美理论电影网| 欧美日韩国产综合视频在线观看| 久久综合电影一区| 欧美xx视频| 欧美精品自拍| 国产精品欧美久久| 国产欧美欧洲在线观看| 9人人澡人人爽人人精品| 欧美黑人多人双交| 99在线精品视频在线观看| 午夜免费日韩视频| 亚洲精品免费一二三区| 国产伦精品免费视频| 欧美精品成人一区二区在线观看 | 免费欧美在线视频| 亚洲国语精品自产拍在线观看| 亚洲人妖在线| 欧美中文字幕在线播放| 亚洲综合国产| 亚洲综合国产激情另类一区| 久久动漫亚洲| 国产精品成人在线| 亚洲国产精品www| 午夜老司机精品| 亚洲精品乱码久久久久久蜜桃91| 久久精品免费| 夜夜爽av福利精品导航 | 欧美日韩在线一区二区三区| 精品成人一区二区| 麻豆国产精品777777在线| 久久精品国亚洲| 亚洲国产精品电影| 日韩视频一区二区三区| 国产精品v日韩精品| 亚洲小视频在线观看| 亚洲免费一在线| 狠狠色狠狠色综合日日五| 久久综合图片| 欧美天天综合网| 久久综合色影院| 欧美日韩在线视频一区| 黄色日韩精品| 美女图片一区二区| 国产日韩综合| 亚洲国产欧美一区| 欧美午夜国产| 欧美va亚洲va香蕉在线| 欧美日韩精品欧美日韩精品一| 香蕉久久久久久久av网站| 麻豆精品一区二区综合av| 午夜精品久久久久久久99水蜜桃| 亚洲欧美日本日韩| 99re在线精品| 久久婷婷影院| 欧美不卡视频一区| 国内精品久久久久久久影视蜜臀 | 亚洲精品一区二区三区av| 亚洲综合日本| 久久国产精品免费一区| 国产精品国产三级国产aⅴ9色| 欧美v亚洲v综合ⅴ国产v| 国内精品伊人久久久久av影院 | 亚洲永久精品国产| 午夜国产一区| 国产亚洲亚洲| 久久久青草婷婷精品综合日韩| 久久久.com| 精品动漫3d一区二区三区免费版| 欧美在线影院| 亚洲国内自拍| 亚洲一级在线观看| 国产一区二区三区的电影 | 亚洲美女一区| 欧美性天天影院|