指標是一個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的一個地址。 要搞清一個指標需要搞清指標的四方面的內容:指標的類型,指標所指向的 類型,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。讓我們分別說明。 先聲明幾個指標放著做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(*ptr)[3]; (5)int*(*ptr)[4];
shell指令碼(.sh):類似windows下的批處理bat.檔案比批處理強大,已經是一強大的程式設計語言了。echo "please enter your name:";read fname;echo ${fname} //{}可以省略預設資料類型為 字元類型env 查看環境變數echo $HOME 查看目前使用者目錄echo $PATH./執行;也可以修改vi /etc/profile增加 PATH=$PATH:.export PATH
1.C++的虛函數是怎樣實現的?
C++標準庫的所有標頭檔都沒有副檔名。C++標準庫的內容總共在50個標準標頭檔中定義,其中18個提供了C庫的功能。 <cname>形式的標準標頭檔【 <complex>例外】其內容與ISO標準C包含的name.h標頭檔相同,但容納了C++擴充的功能。在 <cname>形式標準的標頭檔中,與宏相關的名稱在全域範圍中定義,其他名稱在std命名空間中聲明。在C++中還可以使用name.h形式的標準C庫標頭檔名。C++標準庫的內容分為10類:C1.語言支援
//Log.h#ifndef _LOG_H#define _LOG_H#include <string>#include <time.h>#include <sys/types.h>#include <unistd.h>#include <stdarg.h>#include <sys/stat.h>#include <pthread.h>class CAutoLock{ private:
大致說uinx鎖一般可以分為3種[可能有更多。偶不知道]。線程鎖,訊號量,和記錄鎖。線程鎖對線程有效,訊號量和記錄鎖對進程有效。訊號量:OS課堂上進程式控制制這一章最牛X的概念。優點:效率高。缺點:容易死結。缺點太明顯。沒怎麼用。以後慢慢考慮。線程鎖:多線程的基礎。。優缺點和訊號量差不多。有這樣一個AutoLock,好處就是 在一個鎖變數的生命週期內有效。在函數直接放一個CAutoLock 。就都搞定了。。class CAutoLock{private: pthread_mutex_t*
class COcciConn{public: COcciConn() { m_status = false ; env = NULL ; conn = NULL ; stmt = NULL ; } ~COcciConn() { if ( conn && stmt ) conn->terminateStatement (stmt); if(
當使用C++做HTTP用戶端時,目前通用的做法就是使用libcurl。其官方網站的地址是http://curl.haxx.se/,該網站主要提供了Curl和libcurl。Curl是命令列工具,用於完成FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP的命令的請求及接收回饋。libcurl提供給開發人員,用於使用C++跨平台的開發各種網路通訊協定的請求及響應。裡面的文檔非常齊全,不過都是英文的。
為什麼中國的程式員不敢對C++標準委員會說不?我在CSDN上發了一個貼子,指出C++標準委員會制定標準強制for迴圈一致性的做法是不合理的。其實關於強制for迴圈一致性的討論一直是比較激烈的,以前我在國外一些郵件清單中常常見到這樣的話題,兩方面的意見基本持平,不分高下。我在做我自己的太極語言時發現了一個規則,根據這個規則平滑推理過來可以判斷出不應強制for迴圈一致性,我就在我的blog和貼子裡說了。可是沒想到竟然……我覺到我們中國程式員界有一種不正確的思維定勢,過於迷信C++標準委員會(不只C+
C++設計的又一個缺陷,是否應該提交給C++標準委員會呢?——建構函式與解構函式名稱不應該用類名如果用類名,那麼就是一個資訊冗餘class test{ test(); test(int,int,char *); test(...); ...}現在我要更改test為test2,就需要更改四個地方,維護困難。class test2{ test2(); test2(int,int,char *); test2(...);
C++之父BS說林銳錯了C++之父的C++聖經《C++程式設計語言 特別版》中說:大家不要聽某些人說判斷指標是否為空白用(p==NULL)或(p!=NULL)的格式,C++之父認為這樣寫是不好的,提倡直接寫(p)或(!p)的形式。林銳在國內程式員界也是大名鼎鼎的人物,有大作《高品質C++/C編程指南》,說判斷指標是否為空白要用(p==NULL)或(p!=NULL)的格式,別用(p)或(!p)的形式。那麼大家聽誰的呢?我認為是C++之父BS的正確。理由暫且不說,讀者可以自己想一下了。
.Net和Delphi都對Service進行了很好的封裝,但是用C++編寫Service還是一件很煩瑣的事情。先寫一些輔助類吧:// 管理Service的控制代碼class ServiceHandle {public: ServiceHandle(SC_HANDLE h) : h_(h) { if (!h_) throw SysError(); } ~ServiceHandle() { ::CloseServiceHandle(h_);
接上篇,時間不夠,寫得較亂我上一篇給C++添加屬性機制的文章中,讓屬性類得到目標類的類指標,我使用了一個INIT_PROPERTY宏,在前幾天和龍子龍孫聊天時,他告訴了我一個技巧,得到類成員在類中的位移地址,如下(int)(&((type_name*)NULL)->member_name) 例如我有個類 Aclass A{public: virtual int show() {} int i1, i2;};則 (int)(&((A*)NULL)->i2)
class Parent {public: virtual void foo(int i=0) { cout << "Parent::foo() " << i << endl; }};class Son : public Parent {public: virtual void foo() { cout << "Son::foo()" << endl;
學習C#中……今天發現,C#居然不支援在函數體內聲明static變數,這真的是很古怪,難道一個static變數的就一定要讓別人知道嗎(至少會被類的其他成員知曉)?下邊的C#和C++的比較,很明顯,C++在這一點上要合理很多,uniqueID這個不斷遞增、控制著唯一ID的重要變數,永遠不會被類裡的其他成員無意破壞掉,不知道為什麼C#不允許這種“函數體內部的static變數“,狂汗……//這是C#代碼,uniqueID_只能是類的靜態成員//而不能是Foo()函數的函數體內靜態成員class
1. class和struct的區別class和struct的用法沒什麼區別,只是class預設的成員變數是private,而struct預設是public。2. printf列印一個string時不要忘記使用%s看代碼便知:int main(){ char string[] = “Hello c programmers %dd”; printf(string); return 0;}3.
#include<iostream>using namespace std;template<typename T>struct Iter{typedef T value_type;T* ptr;Iter(T* p=0):ptr(p){}T& operator*() const {return *ptr;}};template<class I>typename I::value_type //這一整行是func的傳回型別func(I
事件是C#中一個重要的內容,MSDN上有一個自訂事件的示範樣本。我看了半天有點暈,所以建立了一個winform工程添加了一個按鈕,然後找出調用的程式,一對比做了一個類似的樣本,就明白了。看代碼有時候比看文檔來得更快。所以還是一貫的原則,來乾的,不來稀的。 using System;namespace TestEventArgs{/// <summary>/// 這個類對應於EventArgs,做對比學習。/// 添加兩個內容:info1,info2。/// </summary&
mutable是一個好玩的C++關鍵字,也是我第一次遇到。於是查了查msdn,結果發現果然是好玩的關鍵字。首先,它只能修飾非const,非static的類資料成員。其次,它用來突破const函數。再次,它就這麼一個功能。class X{public:// 在邏輯上GetFlag只是擷取我的m_flag狀態,所以修飾為const// 但是,我需要知道其中一些動態狀態,所以mutable就誕生// 了,而且專門為此而誕生。bool GetFlag()
聲明:代碼照搬自SharpDevelop源碼。 啟動畫面是程式啟動載入組件時一個讓使用者稍微耐心等待的提示框。一個好的軟體在有啟動等待需求時必定做一個啟動畫面。啟動畫面可以讓使用者有心理準備來接受程式載入的緩慢,還可以讓使用者知道載入的進度和內容。本文只是記錄最簡單的構架。VS2010建立一個C# Windows表單應用程式,將主表單改名為FormMain,再建立一個表單起名為SplashScreen。向程式中載入一個圖片作為啟動畫面,如 然後編輯SplashScreen.cs代碼///