首先,運行下圖中的C++代碼,輸出是什嗎?複製代碼 代碼如下:class A{private: int n1; int n2;public: A(): n2(0) , n1(n2 + 2) { } void Print() { cout<<"n1:"<<n1<<",n2:"<<n2<<endl; }};int
在C++中, 建構函式,拷貝建構函式,解構函式和賦值函數(賦值運算子多載)是最基本不過的需要掌握的知識。 但是如果我問你“拷貝建構函式的參數為什麼必須使用參考型別?”這個問題, 你會怎麼回答? 或許你會回答為了減少一次記憶體拷貝? 很慚愧的是,我的第一感覺也是這麼回答。不過還好,我思索一下以後,發現這個答案是不對的。原因:如果拷貝建構函式中的參數不是一個引用,即形如CClass(const CClass
友元函數和友元類的需要:類具有封裝和資訊隱藏的特性。只有類的成員函數才能訪問類的私人成員,程式中的其他函數是無法訪問私人成員的。非成員函數可以訪問類中的公有成員,但是如果將資料成員都定義為公有的,這又破壞了隱藏的特性。另外,應該看到在某些情況下,特別是在對某些成員函數多次調用時,由於參數傳遞,類型檢查和安全性檢查等都需要時間開銷,而影響程式的運行效率。為瞭解決上述問題,提出一種使用友元的方案。友元是一種定義在類外部的普通函數,但它需要在類體內進行說明,為了與該類的成員函數加以區別,在說明時前面加
1.
使用gcc的編譯器 標頭檔沒有包含stdlib.h,使用atoi函數(atoi函數在stdlib.h中才有聲明),編譯卻沒有出錯如果編譯的時候加上-Wall選項,會有個警告,請問這是為什嗎?這是因為C語言一個非常傻的規定:一個函數如果沒有聲明函數原型,其傳回值類型就是int(所謂的implicit
複製代碼 代碼如下:/* 資料結構C語言版 雜湊表 */#include <stdio.h>#include <malloc.h>#define NULLKEY 0 // 0為無記錄標誌 #define N 10 // 資料元素個數 typedef int KeyType;// 設關鍵字域為整型 typedef struct{ KeyType key; int ord;}ElemType; // 資料元素類型
1.C++很簡單的一種辦法:複製代碼 代碼如下:#include <iostream>#include <fstream>using namespace std;#define FILENAME "stat.dat"int main(){ fstream _file; _file.open(FILENAME,ios::in);
1.輸出上三角形第一行1個星,第二行3個星,第三行5個星,第四行7個星,第五行9個星。分析:三角形的形狀由輸出的空白和星組成,通過分析每一行輸出幾個空格,幾個星,就可完成輸出三角形的工作。複製代碼 代碼如下:#include<iostream>using namespace std;int main(){ int i=0,j=0; for(i=1;i<=5;i++){//控制行數 for(j=1;j<=
1:sizeof是一個函數嗎?2:sizeof與strlen的區別?3:sizeof(int)(*p)的值是多少?複製代碼 代碼如下:int a[10]; sizeof(a);//是多少? sizeof(a[10]);//是多少? void f(int a[10]) { cout<<sizeof(a)<<endl;//值是多少?&
mkdir函數用於建立目錄。格式如下:#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>int mkdir(const char *pathname,mode_t
複製代碼 代碼如下:<SPAN style="BACKGROUND-COLOR: rgb(241,254,221)"><SPAN style="FONT-FAMILY: Microsoft YaHei"> 進行浮點數編程時,如果沒有注意,常常會出現輸出類似 1.#IND, 1.#INF 或者 nan, inf
堆空間的分配和釋放 #include <stdlib.h> malloc、calloc、realloc、free malloc void *malloc(size_t size); 功能:在堆中分配 size 位元組的連續空間 參數:size_位元組數 傳回值:成功返回分配空間的首地址,失敗返回 NULL free void free(void *ptr); 功能:釋放由
位元運算是指按二進位進行的運算。在系統軟體中,常常需要處理二進位位的問題。C語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long類型。C語言提供的位元運算符列表:運算子 含義 描述& 按位與 如果兩個相應的二進位位都為1,則該位的結果值為1,否則為0| 按位或 兩個相應的二進位位中只要有一個為1,該位的結果值為1^ 按位異或 若參加運算的兩個二進位位值相同則為0,否則為1~ 取反 ~是一元運算子,用來對一個位元按位取反,即將0
符號 作用 ────────────────────────── %d 十進位有符號整數
C結構體之位域(位段) 有些資訊在儲存時,並不需要佔用一個完整的位元組, 而只需占幾個或一個二進位位。例如在存放一個開關量時,只有0和1 兩種狀態, 用一位二進位即可。為了節省儲存空間,並使處理簡便,C語言又提供了一種資料結構,稱為“位域”或“位段”。所謂“位域”是把一個位元組中的二進位劃分為幾個不同的地區, 並說明每個地區的位元。每個域有一個網域名稱,允許在程式中按網域名稱進行操作。
在C語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條。介紹它的第一條也是最重要的一條:隱藏。當我們同時編譯多個檔案時,所有未加static首碼的全域變數和函數都具有全域可見度。為理解這句話,我舉例來說明。我們要同時編譯兩個源檔案,一個是a.c,另一個是main.c。下面是a.c的內容複製代碼 代碼如下:char a = 'A'; // global variablevoid msg() { printf("Hello\n");
在C語言中我們操作字串肯定用到的是指標或者數組,這樣相對來說對字串的處理還是比較麻煩的,好在C++中提供了 string 類型的支援,讓我們在處理字串時方便了許多。首先,我寫了一段測試代碼,如下所示:複製代碼 代碼如下:#include <iostream>using namespace std;int main(void){ string str_test1; string str_test2 = "Hello World"; int value1,
一、引言對於沒有接觸過Unix/Linux作業系統的人來說,fork是最難理解的概念之一:它執行一次卻返回兩個值。fork函數是Unix系統最傑出的成就之一,它是七十年代UNIX早期的開發人員經過長期在理論和實踐上的艱苦探索後取得的成果,一方面,它使作業系統在進程管理上付出了最小的代價,另一方面,又為程式員提供了一個簡潔明了的多進程方法。與DOS和早期的Windows不同,Unix/Linux系統是真正實現多任務操作的系統,可以說,不使用多進程編程,就不能算是真正的Linux環境下編程。多線程程
複製代碼 代碼如下:[sam@hzhsan test]$ more test_processname.cpp #include <limits.h>#include <stdio.h>#include <string.h>#include <unistd.h>size_t get_executable_path( char* processdir,char* processname, size_t
#define CHECK(condition) cout<<check failed:<<#condition<<endl;上面這句宏,當你 CHECK(myfunc()); 時,假設myfunc返回false,會輸出:check failed:myfunc() 在宏中,#condition