自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(52)
  • 收藏
  • 关注

原创 C + +本身。

页面加载实际上是一个操作系统的概念,无关与C + +本身。它的开销,这来自于操作系统本身由于存储器被设置的方式。您的计算机上有一定量的物理内存。这种内存需要保存所有正在运行的程序。然而,有时,我们的程序要使用更多的内存比我们有物理内存的机器上的情况下!在过去,你可能会得到一个内存错误,你的程序将无法运行,直到你释放一些东西了。然而,大多数现代操作系统都使用一个称为虚拟内存系统。虚拟内存

2014-05-16 15:23:42 115

原创 类型检查

使用功能上提供了许多好处,包括:该函数中的代码可以重复使用。这是很容易改变或更新代码中的函数(这需要做一次) ,每就地实例比。重复的代码是一个灾难。它使你的代码更易于阅读和理解,因为你不必知道一个函数的实现,以了解它做什么。该功能提供了类型检查。然而,功能的一个主要缺点是,每一个函数被调用时,存在发生了一定的性能开销。这是因为CPU必须保存当前指令的被执行的(所以它知道

2014-05-16 15:18:42 128

原创 函数参数

看到这里的潜在问题?程序员认为用户会输入一个值,0和长度之间的“你好,世界!“。如果用户输入一个负数,或大量的数组索引,索引会出界。在这种情况下,因为我们只是读值,程序会打印一个垃圾信。但在其他情况下,程序可能会损坏其他变量,堆栈,或崩溃。防御性编程是一种形式的程序设计,包括试图找出其中的假设可能被侵犯,并编写代码检测和处理任何违反这些假设使计划的反应,在可预见的方式时,这些行为会发生。

2014-05-15 12:06:02 137

原创 语法和语义错误

编写程序时,它几乎是不可避免的,你会犯错误。在本节中,我们将谈论的是错误的种类,以及它们是如何共同处理。错误分为两类:语法和语义错误。语法错误语法错误发生时,你写了一个声明根据C + +语言语法无效。比如说呢。如果5 > 6然后写“不平等”;

2014-05-15 11:59:11 8499

原创 包括程序的入口点。

什么是这个代码错误的打印10 20 40 50 30.please帮助#包括程序的入口点。”#包括#包括使用std命名空间;国际main(){int数组[ 5 ] = { 40,10,50,30,20 };对于(int III = 0;Ⅲ≤4;Ⅲ+ +){static int n =排列[三];静态数组的个数=

2014-05-15 11:56:07 143

原创 升序或降序

有许多不同的案件中,数组排序的可能是有用的。算法(如搜索看看一些存在于一个阵列)通常可以变得更简单和/或更有效时,输入的数据进行排序。此外,排序是非常有用的可读性,如当打印列表按字母顺序排列的名字。排序通常是通过反复比较的数组元素对进行的,和交换他们如果他们满足一些标准。为了在这些元素进行比较根据不同的排序算法,与标准取决于列表将被排序(升序或降序)。交换两个元素,我们可以使用C++标准库

2014-05-15 11:55:04 303

原创 这将导致一个编译错误。

在这个例子中,resetvalue()已被标记为const成员函数,但它试图改变m_nvalue。这将导致一个编译错误。请注意,构造函数不应该被标记为const。这是因为const对象的成员变量应该初始化,和const构造函数不能这样做。最后,虽然不是很经常,它是可能的重载函数在这样一种方式有一个const和非const版本相同的功能:12

2014-05-14 12:07:16 106

原创 调用成员函数

所有三个涉及csomething以上线是非法的因为他们违反csomething试图改变一个成员变量或调用成员函数,试图改变一个成员变量的常量。现在,考虑下面的电话:123456789101112classSomething{publ

2014-05-14 12:05:17 223

原创 传递参数

在课上,通过引用传递参数,我们覆盖的传递函数参数为const变量的优点。总的来说,决策变量常量确保它们的值是不小心更改。这是特别重要的传递变量的参考,为来电者一般不会期望值传递给一个函数被改变。就像内置的数据类型(int,char,双,等),类的对象可以通过使用const关键字声明为const。所有的const变量必须在创建时初始化。在内置数据类型的情况下,在实例是通过显式或隐式的作业完成

2014-05-14 12:01:48 62

原创 这个循环产生的结果:

由一个错误一个新的程序员都有环的最大的问题是由一个错误。由一个错误发生时,循环太多或太少的时候。这通常是因为错误的关系运算符用于expr1的值(如>代替> =)。这些错误是很难追踪因为编译器不会抱怨他们——程序将运行得很好,但它会产生错误的结果。写作时的循环,记住,循环将只要讲的是真正的执行。一般来说,使用已知的值以确保他们象预期的那样工作,测试你的循环是一个好主意。如果你的回路产

2014-05-11 13:15:47 111

原创 并赋予它值0。

12for(intiii=0; iii     cout " ";这是什么做的?虽然这看起来有些混乱,让我们一块一块的。首先,我们声明了一个变量名为三环路,并赋予它值0。第二,第三<10的评价,因为III是0,0<10为真。因此,该语句执行,打印0。第三,该语句执行后,Ⅲ+ +进行了评价

2014-05-11 13:13:54 120

原创 for语句看起来很简单:

到目前为止,最常使用的循环语句的C + +的for语句。for语句的理想时,我们知道多少次,我们需要重复,因为它让我们很容易地声明,初始化,和在每次迭代循环变量的值的变化。for语句看起来很简单:对于(初始化语句;expr1;expr2)声明;考虑循环的最简单方法是将它们转换成等效的while循环。在老版本的C + +,上述循环是完全等价的:/ /旧编译器

2014-05-11 13:09:36 96

原创 然而,在许多情况下

所有的变量使用到这一点,在本教程中有一个共同点:该变量必须先声明在编译的时候。这导致了两个问题:第一,很难有条件地声明一个变量,把它在一个if语句块之外(在这种情况下,它会超出范围时,块的结束)。第二,所有数组的大小必须决定在运行程序之前。例如,以下是不合法的:12345cout "How many varia

2014-05-11 11:55:28 224

原创 收到编译错误。

当c54g。getid()评价,编译器查看wirelessadaptor包含函数名为getid()。不行。编译器并查看是否有任何的基类有一个功能叫做getid()。看到这里的问题?问题是,c54g实际上包含两个getid()功能:一种来自usbdevice,和一个来自wirelessdevice。因此,这个函数调用有二义性,你会如果您尝试编译它收到编译错误。然而,有一个解决这个问题的方法:

2014-05-08 11:19:53 89

原创 在多重继承的问题

到目前为止,所有的例子的继承我们已提出的单继承,继承的类,每个有且只有一个父。然而,C++提供了做多重继承的能力。多重继承的派生类可以从多个父类继承的成员。我们想写一个程序来追踪一群教师。老师是一个人。然而,老师也是员工(如果为自己工作的他们自己的雇主)。多重继承可以用来创建一个老师的类继承属性都人与员工。使用多重继承,只需指定每个基类(就像在单一继承),用逗号分隔。

2014-05-08 11:15:44 124

原创 初始化静态成员变量

因为s_nvalue是一个静态成员变量,s_nvalue是类的所有对象之间共享。因此,cfirst.s_nvalue是csecond.s_nvalue相同。上述计划表明,我们使用录音的价值可使用csecond!虽然你可以通过类类型的对象访问静态成员,这有点误导。cfirst.s_nvalue意味着s_nvalue属于录音,这是真的不是这样的。s_nvalue不属于任何对象。事实上,s_nv

2014-05-07 18:18:53 213

原创 跨多个函数调用。

C语言关键字在文件范围的教训和关键字,你知道静态变量保持他们的价值观,甚至不在他们超出范围的破坏。例如:在C static关键字在文件范围的教训和关键字,你知道静态变量保持他们的价值观,甚至不在他们超出范围的破坏。比如说呢。

2014-05-07 18:17:18 185

原创 这段代码输出:

默认情况下,在C + +是通过值来传递参数。当参数是按值传递的,复制的参数传给函数。考虑下面的代码片段:12345678910111213141516voidfoo(inty){    usi

2014-05-07 18:15:06 108

原创 谁需要一个盘子从堆栈将你推板上

这是一个很好的部分,我非常有帮助!快速的问题:除了写一个函数或程序来测试限制直到它坠毁,有更容易的方式来确定的大小,或内存量,分配给调用堆栈为一个特定的程序?不知道这之前有助于避免更复杂的程序堆栈溢出?我不明白你的问题。malloc分配内存堆上。对于那些你们谁不知道malloc是什么,它是动态分配的内存的旧风格的方式。在C + +,它本质上是使用新的运营商的青睐。

2014-05-07 10:59:40 113

原创 该函数的代码

超越函数调用指令的地址推送到堆栈。这是怎样的CPU记住去后,函数返回。房间是在函数的返回类型的堆栈。这只是一个占位符,现在。该CPU跳转到该函数的代码。的栈顶指针是在一个特殊的举行,称为堆栈帧。一切都添加到堆栈之后这一点被认为是“本地”的功能。所有的函数参数都放在栈。这个函数的内部指令开始执行。局部变量推到堆栈上为它们定义。当函数结束,以下步

2014-05-07 10:58:13 92

原创 变量被删除

当一个动态分配的变量被删除,记忆是“返回”到堆,然后可以作为未来分配请求的接收。堆的优点和缺点:1)分配的内存分配到具体在释放(注意内存泄漏)。2)动态分配的内存必须通过指针访问。3)由于堆是一个大的内存池,大的数组,结构,或类应该分配在这里。堆栈“调用堆栈”(通常称为“叠”)有一个更有趣的角色。在我们谈论“调用堆栈”,它指的是记忆的一个特定部分,我

2014-05-07 10:57:18 139

原创 T是一美分的对象:

这个错误是由创造我们打电话的时候,平均函数模板实例引起(美分,int)。记住,我们称之为模板函数时,编译器的“模板”出一份功能的模板类型参数(占位符类型)已与在函数调用中的实际类型代替。这是average()函数模板实例时,T是一美分的对象:

2014-05-05 09:31:10 152

原创 模板实例:

然后将其编译成机器语言。值得注意的是,编译器是足够聪明的知道只需要创建一个模板实例的每一套独特的类型参数。值得注意的是,如果你创建一个模板的功能,但没有叫它,没有模板的实例将被创建。运算符,函数调用,和函数模板模板函数与内置类型的工作(如char,int,双,等)和类,有一个警告。当编译器编译模板的实例,它编译它就像一个正常的功能。在一个正常的功能,任何运算符或函数调用,你

2014-05-05 09:29:01 100

原创 函数模板实例

函数模板实例这是值得考虑一下如何模板函数的实现在C + +,因为未来的教训将关闭一些这些概念。原来,C++不编译模板函数直接。相反,在编译的时候,当编译器调用一个函数模板,它复制的模板功能,并与实际类型代替模板类型参数!与实际类型的函数被调用函数模板实例。让我们来看看这样一个例子看看。首先,我们有一个模板函数:12345

2014-05-05 09:26:37 394

原创 我怀疑它会。

我会生成错误的开始的例子当试图初始化手动。结构datestruct{国际nmonth;int星期;国际nyear;};datestruct今天;stoday.nmonth = 10;----错误在这里。stoday.nday = 14;stoday.nyear = 2014;无效的setdate(datestr

2014-05-04 10:25:44 101

原创 在公共类的关键词

值得注意的是,唯一的区别是:在公共类的关键词。我们将讨论它的功能在下一课。就像一个struct定义,一个类的定义并没有宣布任何内存。它只定义了类看起来像。为了使用一个类,该类类型必须声明一个变量:123456Date cToday; // declare a variable of class

2014-05-04 10:24:59 133

原创 基本的数据类型

在C + +提供了一些基本的数据类型(如char,int,长,浮动,双,等),往往是足以解决相对简单的问题,很难用这些类型的解决复杂的问题。一个C++的更有用的功能是定义自己的数据类型,更好地对应于被制定后,问题的能力。你已经看到了如何枚举类型和结构可用于创建您自己的自定义数据类型。这是一个用来举行日期的结构的一个例子:

2014-05-04 10:22:12 76

原创 无限循环这样

因为三不增加在这个程序中,三<10永远是真实的。因此,循环将无法终止,并计划将挂。我们可以声明一个故意的无限循环这样:

2014-05-03 15:47:45 151

原创 该语句执行。

while语句是最简单的三圈,C++提供了。它的定义是一个非常类似的语句:而(表达)声明;一个语句的使用而关键字声明。当语句被执行,该表达式被求值。如果表达式计算结果为true(非零),该语句执行。然而,不像一个if语句,语句执行完毕后,控制返回到while语句和过程上是重复的。让我们以一个简单的看一看,环。下列程序打印所有的数字从0和9:

2014-05-03 15:45:53 76

原创 相当微不足道。

虽然这个图是疯狂的寻找,这真的很简单:* __vptr每班点的虚拟表类。在最派生版本这类可以调用函数的对象的虚拟点表条目。所以考虑会发生什么,我们创建的一个对象时,D1型:1234intmain(){    D1 cClass;}

2014-05-03 12:27:09 88

原创 实现虚拟函数

实现虚拟函数,C + +使用后期绑定的被称为虚拟表中的一种特殊形式。虚拟表是一种用于解决动态/后期绑定的函数调用函数查找表的方式。虚拟表有时去其他的名字,如“位置”,“虚拟函数表”,“虚拟方法表”,或“分配表”。因为知道虚拟表的工作是没有必要使用虚函数,这部分可以被认为是选择性阅读。虚拟表实际上很简单,虽然描述的话有点复杂。首先,每一个类,使用虚函数(或派生类使用虚函数)给出了它自

2014-05-03 12:24:23 114

原创 关键字template

首先,请注意,我们开始了与模板>。关键字template告诉编译器,下面是模板,和空角括号意味着没有任何模板参数。在这种情况下,没有任何的模板参数,因为我们只更换模板参数(typename T)与特定类型(布尔)。接下来,我们将 bool >的类的名称来表示,我们专业的Storage8 bool版本。所有其他的改变只是类的实现细节。你不需要了解位逻辑的作品中使用的类(尽管这是一个链

2014-04-30 10:31:36 152

原创 这图大家能看明白吗

1234567891011121314151617181920212223242526272829template// the followin

2014-04-30 10:30:23 74

原创 成员函数

在模板特化的以前的教训,我们看到它是如何可能的特化模板类的成员函数以提供特定的数据类型不同的功能。事实证明,它不仅是可能的特化的模板类的成员函数,它也可能是一整类!考虑你想要设计一个类存储8个对象的情况下。这是一个这么做的简单的类:

2014-04-30 10:29:36 52

原创 使用的猫和狗

虽然这两个例子只使用的猫和狗,其他类我们从动物的工作也将与我们的report()功能和动物阵列不进一步修改!这也许是虚函数,在这样一种方式,新派生的类会自动工作,与旧代码无需修改你的代码的能力结构的最大效益!一句警告:派生类的函数的签名必须与基类的虚函数的派生类的函数中使用的顺序签名完全匹配。如果派生类函数有不同的参数类型,程序可能仍会编译通过,但是虚拟函数不会解决打算。利用虚拟关

2014-04-30 10:19:11 62

原创 虚函数的类

你认为这一计划将输出?让我们看看这个过程是如何。首先,我们实例化一个类的对象。rbase是一个指针,我们设置为指向的对象的一部分。最后,我们称rbase getname()。rbase getname()。计算结果为::getname()。然而,一个::getname()是虚拟的,所以编译器将检查所有A和C之间的类是否能找到一个更衍生得到的匹配。首先,它检查B::getname(),并找到

2014-04-30 10:17:46 178

原创 源对象的基类

在上一课的指针和引用的源对象的基类,我们看一些例子,使用指针或引用基类必须简化代码的潜力。然而,在任何情况下,我们碰到的指针或引用只能调用一个函数库的版本问题,不是一个派生版本。这里是一个简单的例子,这种行为:

2014-04-30 10:15:34 84

原创 值得一提的是

值得一提的是,构造函数只能从他们的直接父/基类调用构造函数。因此,C的构造函数不能调用和参数传递给构造函数直接。构造函数只能调用构造函数(B具有调用构造函数的责任)。析构函数当一个派生类的析构函数销毁,每个在施工顺序相反的顺序为。在上面的例子中,当阶层被摧毁,C调用析构函数,第一,然后B的析构函数,然后一个析构函数。摘要虽然这是真实的,最基类首先被初始化,这实际上只

2014-04-29 18:22:44 638

原创 C类是来自B类

现在我们可以创造棒球球员:123456intmain(){    BaseballPlayer cPlayer("Pedro Cerrano", 32, true, 0.342, 42);     return0;}

2014-04-29 18:21:12 72

原创 baseballplayer只初始

另一个例子让我们来看看另一个对课我们曾与一看:12345678910111213141516171819202122232425262728

2014-04-29 18:17:35 153

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除