C++ Primer
ctthuangcheng
这个作者很懒,什么都没留下…
展开
-
C++ Primer 有感(new和delete表达式)
定义变量时,必须指定其数据类型和名字。而动态创建对象时,只需指定其数据类型,而不必为该对象命名。取而代之的是,new表达式返回指向性创建的指针。1.动态创建对象的默认初始化 对于类类型的对象,用该类的默认构造函数初始化;而内置类型的对象则无初始化。string *ps = new string; //initialized to empty string int *pi = new原创 2013-06-26 17:18:06 · 1630 阅读 · 0 评论 -
C++ Primer 有感(标准库set类型)
set容器只是单纯的键的集合,键必须为一。set容器不支持下标操作,而且没有定义maped_type类型。在set容器中,value_type不是pair类型,而是与key_type类型相同的类型。1.在set中添加元素set set1;set1.insert("the");set1.insert("end"); 也可以添加一对迭代器,如下:set1.insert(set33.begin(),se原创 2013-07-03 13:02:13 · 1443 阅读 · 0 评论 -
C++ Primer 有感(标准库类型)
1.当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的:string s1= "hello"; sring s2="world"; string s3=s1 + ", "; //OK string s4 = "hello" + ","; //error string s5 = s1 + "," + "world";原创 2013-06-26 15:48:47 · 1342 阅读 · 0 评论 -
C++ Primer 有感(类)
1.在类内部,声明成员函数时必需 的,而定义成员函数则是可选的。在类内部定义的函数默认为inline。 2.const成员函数不能改变其所操作的对象的数据成员。const必须同时出现在声明和定义中,若只出现其中一处,就会出现一个编译时错误。 3.显示指定inline成员函数在类内部定义的成员函数默认是inline。显示指定inline成员函数的办法有3种:(1)类定义体内部指定inline,作为其原创 2013-06-29 16:53:00 · 1512 阅读 · 0 评论 -
C++ Primer 有感(异常处理)(四)
查看普通函数的声明的时候,不可能知道该函数会抛出什么异常,但是在捕获异常的时候要知道一个函数会抛出什么样的异常,以便捕获异常。异常说明:指定,如果函数抛出异常,抛出的异常将是包含在该说明中的一种,或者是从列出的异常中派生的类型。1.定义异常说明异常说明跟在形参表后。一个异常说明在关键字throw之后跟着一个由圆括号括住的形参列表,该列表可能为空或者多个,若为多个,则用逗号分开。例如:void ge原创 2013-07-02 17:34:14 · 1209 阅读 · 0 评论 -
C++ Primer 有感(标准库map类型)
map是键-值对的集合。map类型通常可以理解为关联数组:可以使用键作为下标获取一个值,正如内置数组一样。而关联的本质在于元素的值于某个特定的键相关联,而并非通过元素在数组中的位置获取。1.map对象的定义要使用map对象,则必须包含map头文件。在定义map对象时,必须分别指明键和值得类型map word_count; string为键,int为值map的构造函数map m;原创 2013-07-03 12:53:44 · 1413 阅读 · 0 评论 -
C++ Primer 有感(标准库vector及迭代器)
vector是同一种对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库将负责管理与存储元素相关的类存。引入头文件#include1.vector对象的定义和初始化[cpp] view plaincopyvector v1 vector保存类型为T的对象。默认构造函数,v1为空 vector v2(v1) v2是v1的一个副本 v原创 2013-07-03 12:58:02 · 1337 阅读 · 0 评论 -
C++ Primer 有感(标准库pair)
与关联容器相关的模板类型,包含两个数据成员,在utility头文件中定义.pair类型提供的操作:pair p1;pair p1(v1,v2);make_pair(v1,v2);p1 p1 == p2;p.first;p.second; 1.创建和初始化: pair name; pair> data;以上全部调用pair类型的默认构造函对其成员进行数值初始化,成员初始化为空或0值也能在定义原创 2013-07-03 13:00:35 · 1436 阅读 · 0 评论 -
C++ Primer 有感(顺序容器)
1.顺序容器的元素排列次序与元素的值无关,而是由元素添加到容器里的次序决定。2.顺序容器 vector 支持快速随机访问 list 支持快速插入/删除 deque 双端队列顺序容器适配器 stack原创 2013-06-28 11:01:26 · 2217 阅读 · 0 评论 -
C++ Primer 有感(异常处理)(三)
先看下面的代码:[cpp] view plaincopyint main() { int *i=new int(10); /* 这中间的代码出现异常 */ delete i; return 0; } 如果出现了这样的情况,动态分配的内存就不会被释放。为了处理这样的问题,可以使用C++标准库auto_ptr类。如果原创 2013-07-02 17:33:12 · 1354 阅读 · 0 评论 -
C++ Primer 有感(异常处理)(二)
异常就是运行时出现的不正常,例如运行时耗尽了内存或遇到意外的非法输入。异常存在于程序的正常功能之外,并要求程序立即处理。不能不处理异常,异常是足够重要的,使程序不能继续正常执行的事件。如果找不到匹配的catch,程序就调用库函数terminate。 如果不处理异常将会出现上图的效果。下面是处理异常的代码:[cpp] view plaincopy#include using namespace s原创 2013-07-02 16:34:14 · 1451 阅读 · 0 评论 -
C++ Primer 有感(复制控制)
1.不管类是否定义了自己的析构函数,编译器都 自动执行类中非static数据成员的析构函数。 2.如果我们没有定义复制构造函数,编译器就会为我们合成一个。合成复制构造函数的行为是,执行逐个成员初始化,将新对象初始化为原对象的副本。 所谓“逐个成员”,指的是编译器将现有对象的每个非static成员,依次复制到正创建的对象。合成复制构造函数直接复制内置类型成员的值,类类型成员使用该类的复制构造函原创 2013-06-30 10:27:13 · 1362 阅读 · 0 评论 -
C++ Primer 有感(重载操作符)
1.用于内置类型的操作符,其含义不能改变。也不能为任何内置类型定义额外的新的操作符。(重载操作符必须具有至少一个类类型或枚举类型的操作数。这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义)2.重载操作符,操作符的优先级、结合性或操作数数目不能改变。注意:重载操作符时使用默认实参是非法的。3.重载操作符并不保证操作数的求值顺序,不再具备短路求值特性。4.作为类成员的重载函数,其形参看原创 2013-06-30 12:58:31 · 1845 阅读 · 0 评论 -
C++ Primer 有感(面向对象编程)
1.除了构造函数之外,任意非static成员函数都可以是虚函数。保留字virtual只在类内部的成员函数声明处出现,不能用在类定义体外部出现的函数定义上。 2.派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限。 3.派生类中虚函数的声明必须与基类中的定义方式完全匹配,但有一个例外:返回对基类的引用(或指针)的虚函数。派生类中原创 2013-06-30 18:25:42 · 1373 阅读 · 0 评论 -
C++ Primer 有感(多重继承与虚继承)
1.多重继承的构造次序:基类构造函数按照基类构造函数在类派生列表中的出现次序调用,构造函数调用次序既不受构造函数初始化列表中出现的基类的影响,也不受基类在构造函数初始化列表中的出现次序的影响。2.在单个基类情况下,派生类的指针或引用可以自动转换为基类的指针或引用,对于多重继承也是如此,派生类的指针或引用可以转换为其任意基类的指针或引用。3.多重继承像单继承一样,用基类的指针或引用只能访问基类中定义原创 2013-07-01 14:53:51 · 1816 阅读 · 0 评论 -
C++ Primer 有感(异常处理)
1.异常是通过抛出对象而引发的。该对象的类型决定应该激活哪个处理代码。被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那个。2.执行throw的时候,不会执行跟在throw后面的语句,而是将控制从throw转移到匹配的catch,该catch可以是同一函数中局部的catch,也可以在直接或间接调用发生异常的函数的另一个函数中。控制从一个地方传到另一地方,这有两个重要含义: (1)原创 2013-07-02 11:17:15 · 1519 阅读 · 0 评论 -
C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
一、本文目的与说明 1. 本文目的:理清在各种继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容。 2. 说明:虽然复制构造函数属于构造函数的一种,有共同的地方,但是也具有一定的特殊性,所以在总结它的性质时将它单独列出来了。 3. 单继承、多继承、虚继承,既然都属于继承,那么虽然有一定的区别,但还是相同点比较多。如果放在一块讲,但为了将内容制作成递进的,就分原创 2013-07-03 08:57:05 · 1910 阅读 · 0 评论 -
C++ Primer 有感(命名的强制类型转换)
C++四种强制类型转换的方法以及其应用场合,之前有看过这个知识点,但是,面试的时候怎么想也就没有写的很全面,于是,这里整理一下: C++中的四种强制类型转换除了具有C语言强制类型转换的功能外,还可提供更好的控制强制转换的过程;能更清晰地表明程序员的意图,程序员只有看到这样的代码,立即就能知道一个强制类型转换的目的。 C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换原创 2013-06-26 17:54:20 · 1524 阅读 · 0 评论 -
C++ Primer 有感(函数)
1.函数应该在头文件中声明,并在源文件中定义。(定义函数的源文件应包含声明该函数的头文件)将提供函数声明的头文件包含在定义该函数的源文件中,可使编译器能检查该函数的定义和声明是否一致。2.既可以在函数声明也可以在函数定义中指定默认参数。但是,在一个文件中,只能为一个形参指定默认实参一次。下面的例子是错误的: //ff.hint ff ( int i=0 ); //ff.c #include "原创 2013-06-26 19:04:58 · 1796 阅读 · 0 评论 -
C++ Primer 有感(命名空间)
1.原创 2013-07-03 11:12:38 · 1897 阅读 · 0 评论