第四章總結: 1、不能將一個數組賦值給另一個數組 2、string是以/0結尾的,char[]如果沒有特別賦值時,是沒有的,只能是字符數組,不是字符串。 3、通過cin輸入的字符中,用空字符(空格、回車、制表符等)來結尾。 4、new分配的內存一般存在堆(heap)或者自由存儲區中,變量聲明的內存一般存在棧(stack)中. 5、c++管理內存的方式:自動存儲,靜態存儲,動態存儲。 (1)自動存儲:局部變量,放在棧中,先進后出。 (2)靜態存儲:static 或者寫在函數外。 (3)動態存儲:new出來的都是,放在堆中。 Test.h文件
#ifndef _TEST_H_#define _TEST_H_#include <iostream>using namespace std;class Test{public: Test(char c); ~Test(); static Test * getTest();PRivate: char flag;};#endifTest.cpp文件
#include "Test.h"#include <iostream>using namespace std;Test::Test(char c){ flag = c; cout << "create Test,flag:" << flag << endl;}Test::~Test(){ cout << "delete Test,flag:" << flag << endl;}Test * Test::getTest(){ Test b('b'); Test * c = new Test('c'); return c;}main.cpp
#include <iostream>#include "Test.h"using namespace std;static Test test('a');int main(){ test.getTest(); return 0;}運行結果:
因為a是靜態變量,所以程序啟動的時候先創建了a,然后才進入main函數。 在getTest函數內先創建了b,然后new了一個c。b是聲明出來的,所以函數結束之后,就會刪除掉,而c是new出來的,放在堆中。 走完main函數,在外面才刪除了a。靜態變量是在關閉程序的時候才回收的。 而c,c的析構函數沒有走到。證明在堆中的內存,程序是不會回收的.
6、vector初始化化可以用{}直接包含一些元素進去。
7、把字符串指針強制轉換為整型指針,cout輸出的就是字符串的地址。
8、cin輸入的問題:不能讀整行,可以用cin.getline(buffer,size);來讀取。 在連續使用cin的時候,cin.get()可以用來吃掉cin輸入最后的回車/n;
第五章總結 1.要輸出bool,要設置標記,默認是輸出0和1的。 cout.setf(ios_base::boolalpha); cout << true << endl;
2、c++11支持在for(int i = 0; i < len; i++)直接定義循環變量,同時出了循環i的作用域失效。
3、cin>>ch,跳過空格、換行符、制表符。cin.get(ch) 和 ch = cin.get()可以讀取這些字符
4、部分總結與c語言部分重復較多就不一一列出了。
第六章總結: 1、下面是c++primer書上一些字符庫函數,編程的時候還是很方便的。 字符函數庫頭文件 isalnum() 字母或數字 isalpha() 字母 iscntr() 控制字符 isdigit() 數字(0 - 9 ) isgraph() 空格之外的打印字符 islower() 小寫字母 isprint() 打印字符,包括空格 ispunct() 標點符號 isspace() 標準空白字符,如空格,進紙,回車,水平制表符,垂直制表符 isupper() 大寫字母 isxdigit() 十六進制字符 tolower() 如果是大寫,轉小寫 toupper() 如果是小寫,轉寫 2、第六章的講的東西跟c語言重復很多,因此不再此一一列出。
新聞熱點
疑難解答
圖片精選