摘要:
//1.当函数返回string时候的注意点: string Fun() { return string("szn"); } const char* pStr = Fun().c_str(); //如上代码,pStr = "" 而非 "szn",原因:返回的string变量被析构了 //2.正则表达式组件: regex:用于表示一个正则表达式 regex_match:将一个字符序列与一个正... 阅读全文
随笔分类 - C++Primer 笔记
C++Primer 第十九章
2016-07-12 22:08 by szn好色仙人, 302 阅读, 收藏,
摘要:
//1.控制内存分配: //A:某些应用程序对内存分配有特殊的需求,因此我们无法将标准内存管理机制直接应用于这些程序。它们常常需要自定义内存分配的细节,比如使用关键字new将对象放置在特定的内存空间中。 //B:如下代码: string *sp = new string("s"); string *arr = new string[10]; // new系列运算符实际上执行了三步操作: // ... 阅读全文
C++Primer 第十八章
2016-07-07 21:38 by szn好色仙人, 241 阅读, 收藏,
摘要:
//1.异常:待研究 //2.命名空间: // A:多个库将名字放置在全局命名空间中将引发命名空间污染。 // B:命名空间为防止名字冲突提供了更加可控的机制。命名空间分割了全局命名空间,其中每个命名空间都是一个作用域。 // C:一个命名空间的定义包含两个部分:首先是关键字namespace,随后是命名空间的名字。只要是能出现在全局作用域中的声明就能置于命名空间中,主要为:类,变量(及... 阅读全文
C++Primer 第十七章
2016-07-06 21:44 by szn好色仙人, 235 阅读, 收藏,
摘要:
//1.当我们希望将一些数据组合成单一对象,但又不想麻烦地定义一个新的数据结构来表示这些数据的时候,tuple非常有用。其和其伴随类型和函数都定义在头文件tuple中,声明在命名空间std中。 tuple t; //t是一个tuple成员数为n,第i个成员的类型是Ti。所有的成员都进行值初始化。 tuple t(v1, v2,....,vn); //t是一个... 阅读全文
C++Primer 第十六章
2016-06-29 21:40 by szn好色仙人, 233 阅读, 收藏,
摘要:
//1.模板定义以关键字template开始,后跟一个模板参数列表,此列表不能为空。编译器用推断出的模板参数来实例化一个特定版本的函数。类型参数前必须使用class或者typename(推荐使用typename)。 template bool comp(T t0, T t1){return t0 > t1;} //2.除了定义类型参数外,还可以在模板中定义非类型参数。一个非类型参数表示一个值... 阅读全文
C++Primer 第十五章
2016-06-28 20:44 by szn好色仙人, 464 阅读, 收藏,
摘要:
//17. A(基类) B(派生类)公有继承 公有成员 公有成员 保护成员 保护成员 私有成员 不可见 保护继承 公有成员 保护成员 保护成员 保护成员 私有成员 不可见 私有继承 公有成员 私有成员 保护成员 私有成员 私有成员 不可见 一般来说,公有继承时是Is A的关系,私有继承时是Has A 阅读全文
C++Primer 第十四章
2016-06-20 23:18 by szn好色仙人, 348 阅读, 收藏,
摘要:
//1.当运算符作用于类类型运算对象时,可以通过运算符重载重新定义该运算符的含义。明智的使用运算符重载能令程序更加易于编写和阅读。 //2.重载的运算符是具有特殊名字的函数,它们由关键字operator和其后要定义的运算符号共同组成。和其它函数一样,重载的运算符也包含返回类型,参数列表以及函数体。 //3.除了重载函数调用符之外,其余的重载运算符不能含有默认实参。 //4.如果运算符函数是... 阅读全文
C++Primer 第十三章 拷贝控制
2016-06-19 11:36 by szn好色仙人, 442 阅读, 收藏,
摘要:
//1.当定义一个类时,我们显示地或隐式地指出在此类型的对象(注意这里是此类型的对象,而不包括此类型的指针)拷贝,移动,赋值,销毁时做什么。一个类通过定义五种特殊的成员函数来控制这些操作:拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值运算符,析构函数。 //当定义了五种特殊成员函数的其中一个的时候,一般也需要定义其他几个操作。 //拷贝构造函数的第一个参数必须是一个引用类型,若第一个参数不... 阅读全文
C++Primer 第十二章 动态内存
2016-06-15 22:23 by szn好色仙人, 326 阅读, 收藏,
摘要:
void Fun0(CRITICAL_SECTION* p) { LeaveCriticalSection(p); } auto FunTest = [](CRITICAL_SECTION* p){LeaveCriticalSection(p);}; CRITICAL_SECTION Cs; sha 阅读全文
C++Primer STL算法
2016-06-12 22:42 by szn好色仙人, 991 阅读, 收藏,
摘要:
//1.概览: // A:beg和end是表示元素范围的迭代器。 // B:beg2是表示第二个输入序列开始位置的迭代器。end2表示第二个序列的末尾位置,若没有end2,则假定beg2表示的序列至少与beg和end表示的序列一样大。 // C:dest是表示目的序列的迭代器,对于给定输入序列,算法需要生成多少元素,目的序列必须能保存同样多的元素。 // D:unaryPred和bina... 阅读全文
C++Primer 第十一章 关联容器
2016-06-07 20:47 by szn好色仙人, 240 阅读, 收藏,
摘要:
int _tmain(int argc, _TCHAR* argv[]) { const int CCount = 1e6; const int CTime = 50; vector<int> vecInt; unsigned long long nT0 = GetTickCount64(); fo 阅读全文
C++Primer 第十章 泛型算法
2016-06-07 20:46 by szn好色仙人, 181 阅读, 收藏,
摘要:
//1.标准库算法不仅可以应用于容器,还可以应用于内置数组,指针。 //2.大多数算法都定义在头文件algorithm中。标准库还在头文件numeric中定义了一组数值泛型算法。 //3.算法本身不会改变其操作对象的大小,但是通过插入迭代器,可以间接改变传入容器的大小。 //4.lambda表达式: // A:一个lambda具有返回类型(必须由尾置返回),一个参数列表,一个函数体。可以... 阅读全文
C++Primer 第九章 顺序容器
2016-06-02 20:19 by szn好色仙人, 269 阅读, 收藏,
摘要:
#include <vector> using std::vector; class CTest { public: explicit CTest(int value) { value0 = value; printf("0 "); } CTest(const CTest& Test) { valu 阅读全文
C++Primer 第七章 类
2016-05-30 23:25 by szn好色仙人, 250 阅读, 收藏,
摘要:
//1.定义在类内部的函数是隐式内联的。 //2.默认情况下,this指针的类型是指向类类型非常量版本的常量指针。对于类的常量成员函数的声明方法是:将const放置于成员函数的参数列表后,用于修饰this指针。对于类A,其一般的this指针类型为:A *const this;其常量常量成员函数中的this指针类型为:const A* const this。 //3.编译器处理类的时候,先编译... 阅读全文
C++Primer 第六章 函数
2016-05-25 22:11 by szn好色仙人, 261 阅读, 收藏,
摘要:
void Fun(){ void Fun1(); Fun1(); } void Fun1(){ printf("Fun1\n");//运行至此} int _tmain(int argc, _TCHAR* argv[]){ Fun(); return 0;} 阅读全文
C++Primer 第五章 语句
2016-05-23 22:47 by szn好色仙人, 149 阅读, 收藏,
摘要:
//1.表达式语句的作用:执行表达式并丢弃求值结果 int value = 10; value + 5; //执行,并丢弃结果 //2.复合语句是指用花括号括起来的语句和声明的序列,复合语句称为块。一个块就是一个作用域。块不以分号为结束。 //3.在if else while等之后加上花括号,有助于程序的阅读。 //4.else匹配与其最近的尚未匹配的if匹配... 阅读全文
C++Primer 第四章 表达式
2016-05-23 20:07 by szn好色仙人, 240 阅读, 收藏,
摘要:
//1.当我们对运算符进行重载的时候,其包括运算对象的类型和返回值的类型都是由该运算符定义的,但是运算对象的个数和优先级,结合律都是不能改变的 //2.当一个对象被用作右值的时候,用的是对象的值(内容)。当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。 //3.复合表达式:是指含有两个或多个运算符的表达式。求复合表达式的值需要首先将运算符和运算对象合理的组合在一起。优先级和结合律... 阅读全文
C++Primer 第三章 字符串、向量和数组
2016-05-21 12:01 by szn好色仙人, 196 阅读, 收藏,
摘要:
//1.位于头文件中的代码一般不应该使用using声明。这是因为头文件的内容会拷贝到所有引用它的文件中,可能会产生始料未及的命名空间冲突。 // 三种使用命名空间中的名字的方法 using namespace std; //最好不要在头文件中使用,容易造成命名空间名字污染,导致命名冲突 using std::string; std::string; //2.头文... 阅读全文
C++Primer 第二章 变量和基本类型
2016-05-21 09:50 by szn好色仙人, 215 阅读, 收藏,
摘要:
typedef class CTest0 { public: int i; }Test0; //Test0是类型 class CTest1 { public: int i; }Test1; //Test1是变量 Test0 T0; //Test0.i = 10; //错误 //Test1 T1; / 阅读全文
C++Primer 第一章 开始
2016-05-19 19:19 by szn好色仙人, 147 阅读, 收藏,
摘要:
/* 1.main函数的标准写法就只有两种,一种是带命令行的,一种是不带命令行的。其返回类型必须是int。 2.如果main函数最后没有return语句,则编译器会自动加上一句 return 0; */ //第一种带命令行的 int _tmain(int argc, _TCHAR* argv[]) { return 0; } //第二种不带命令行的 int main() {... 阅读全文
浙公网安备 33010602011771号