第四章总结: 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语言重复很多,因此不再此一一列出。
新闻热点
疑难解答
图片精选