C++一些基本概念

1.strcpy是拷貝直到\n時結束,所以長度上要增加一個字節,例如原來是一個字符的char[s]="s",
到了string中就是"s\n",strcpy是拷貝2個字符,如果拷貝目標地址只有一個字節長度,就會有問題。

2.每個線程一個棧(stack),堆(heap)空間共享,棧空間線程獨立,全局變量進程內共享.
另外在windows下如果用dll,那麼每個dll有自己的數據段,全局變量在dll內共享.
有些第三方庫內部有隱含的全局變量,使用多線程調用這些庫的時候要小心.
全局變量指static或者在函數體外面定義.
類沒有定義變量,類只是定義數據結構.對象纔是變量,成員變量是對象這個變量內嵌的變量

3.一個問題:

pure virtual method called
terminate called without an active exception
Aborted

看是否有對象被delete兩次了。

4.建議不要在構造函數裏做一些初始化資源之類的事情。構造函數只做不得不做的東西,初始化單獨寫一個init函數,創建後顯式調用。

5.如果函數參數傳的是對象的引用,那麼這個參數是不需要判斷空間是否分配的,這裏的空間是肯定會有的。

6.struct和class的區別就在於默認的訪問是public還是private,其他都一樣

struct S
{
 std::string  type;
 unsigned int len;
 unsigned char* body;
public: 
 ~S(){
  delete[] body;
  body = NULL;
 }
};

struct也有繼承

7. 返回引用的用法
方法定義:
static A& getInstance();

調用時
A  a = getInstance();  另外創見一個對象a,將getInstance()返回的對象賦值給a
A& a = getInstance();  創建一個類似指針的A的引用,所指向的對象就是getInstance()。

8.變量初始化

只有靜態變量被系統初始化了,例如int類型的靜態變量被初始化成0,如果是對象的成員變量,需要自己顯式地初始化,否則不知道是個什麼數字。

9.管道文件

mkfifo /dev/filename

set_fl(STDOUT_FILENO, O_NONBLOCK); /* set nonblocking */

發佈了5 篇原創文章 · 獲贊 0 · 訪問量 2515
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章