- 博客(17)
- 资源 (7)
- 收藏
- 关注
转载 C++ 函数模板
#include"stdafx.h"#includeusing namespace std;/**函数模板一个通用函数模板,该函数在数组中查找一个值并返回这个值得索引。*/static const size_t NOT_FOUND = (size_t)(-1);template size_t Find(T& value, T* arr, size_t size){ for
2016-10-26 19:25:12 430
转载 C++ 方法模板
C++允许模板化类中的单个方法。这些方法可以在类模板中,也可以在非模板化的类中。在编写模板化的类方法时,实际在为很多不同的类型编写很多不同版本的方法。在类模板中,方法模板对赋值运算符和复制构造函数非常有用 注意:不能用方法模板编写虚方法和析构函数 考虑最早只有一个模板参数——元素类型——的Grid模板。 Grid myIntGrid; Grid myDoube
2016-10-26 14:43:06 1074
转载 C++ 编译器处理模板的原理
编译器遇到模板方法定义时,会进行语法检查,但是并不编译模板。编译器无法编译模板定义,因为它不知道使用什么类型。不知道x和y的类型,编译器就无法为x=y这样的语句生成代码。编译器遇到一个实例化的模板时,例如GridmyIntGrid,就会将模板定义中的每一个T替换为int,从而生成Grid模板的int版本代码。当编译器遇到这个模板另一个实例时,例如,Grid mySpreadsheet,就为Sp
2016-10-26 10:19:43 6014
转载 C++ 模板
C++不仅提供了面向对象程序设计的语言支持,还提供了泛型编程(generic programming)的语言支持。泛型编程的目的是编写可重用的代码。在C++中,泛型编程的基本工具是模板。1.编写不使用模板的代码GamePiece基类添加虚方法clone()。GamePiece基类接口如下:#pragma once#includeclass GamePiece{virtual s
2016-10-25 18:13:50 451
转载 C++ 标准库概述
C++标准库,顾名思义,这个库是C++标准的一部分,任何符合标准的编译器都应该带有这个库。标准库并不是一体性的库,而是包含了一些完全不同的组件。所有标准库类和函数都在std名称空间中声明。C++标准库的核心是泛型容器和泛型算法。库中的这一子集常称为标准模板库(Standard Template Library,STL),因为这一部分大量使用了模板。STL的目标是要让STL容器和算法和手
2016-10-24 10:39:58 611
转载 C++ 异常—常见的错误处理问题
内存分配错误 如果无法分配内存,new和new[]的默认行为是抛出bad_alloc类型的异常,这个类型在头文件中定义。代码应该捕捉这些异常,并正确处理异常。 不可能把对new和new[]的调用都放在try/catch中,但至少在分配大块内存时应这么做。下面示例演示了如何捕获内存分配异常:try{ Ptr=new int[ numInts];} catch(co
2016-10-23 21:20:36 1804
转载 C++ 异常—堆栈的释放与清理
当某段代码抛出一个异常时,会在堆栈中寻找catch处理程序。Catch处理程序可以是在堆栈执行的0个或者多个函数调用。当发现一个catch时,堆栈会释放所有中间堆栈帧,直接跳到定义catch处理程序的堆栈层。堆栈释放(stack unwinding)意味着调用所有具有局部作用域的名称的析构函数,并忽略在当前执行点之前的每个函数中所有的代码。 然而当堆栈释放时,并不释放指针变量,
2016-10-23 08:05:46 6514
转载 C++ 嵌套异常
当处理第一个异常时,可能会触发第二种异常情况,从而要求抛出第二个异常。遗憾的是,当抛出第二个异常时,正在处理的第一个异常的所有信息都会丢失。C++用嵌套异常(nested exception)的概念提供了解决这一问题的方案,嵌套异常允许将捕获的异常嵌套到新的异常环境。使用std::throw_nested()可以抛出嵌套了异常的异常。第二个异常的catch处理程序可以使用dynamic_cast访
2016-10-22 20:16:04 3327
转载 C++ 编写自己的异常类
编写自己的异常类有两个好处:1)C++标准库中的异常数目有限,可以在程序中为特定的错误创建更有意义的类名称,而不是使用具有通常名称的异常类,例如runtime_error2)可以在异常中加入自己的信息,而标准层次结构中的异常只允许设置错误字符串。例如或许想在异常中传递不同的信息。示例为文件错误定义自己的错误层次结构,从一个泛型类FileError开始:#pragma once#i
2016-10-22 17:43:04 2851
转载 C++ 抛出列表
C++的旧版本允许指定函数或者方法可以抛出的异常,这个规范叫做抛出列表(throw list)或者异常规范(exception specification)。自C++11之后,废弃了这些抛出列表。但这里仍解释其语法,因为可能在已有的代码体中遇到它们。下面给出前面示例中的readIntegerFile()函数,现在这个函数具有恰当的抛出列表:void readIntegerFile(const
2016-10-22 15:59:40 402
转载 C++ 未捕获的异常
如果程序抛出的异常没有捕获,程序结束。可以对main()函数使用try/catch结构,以捕获所有未经处理的异常,如下所示:try{ main(argc,argv);}catch(...){ //}这一行为通常并非我们希望的。异常的要点在于给程序一个机会,来处理和修正不希望看到的或不曾预期的情况。即使无法处理特定的异常,也应该编写代码捕获这个异常,并输出恰当
2016-10-21 19:45:25 5625 1
转载 C++ 一句话实现是否为2的若干次幂的判断
#include"stdafx.h"#includeusing namespace std;/**一句话实现是否为2的若干次幂的判断当m中只有一位为1时,才为若干次幂若有两个集以上1,则(m&(m-1))不为0,输出0,表示不为2的若干次幂类比: x为2的若干次幂即表示x中1的位数为1,题目转化为求一个32位数中1的位数,如果为1,则表示该数为2的若干次幂 同理也可
2016-10-20 20:25:57 2669
转载 C++ 抛出并捕获多个异常
// Project20161020.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#include#include#includeusing namespace std;/**抛出并捕获多个异常*/void readIntegerFile(const string& fileName, vector &
2016-10-20 15:36:57 7002
原创 C++ 异常类型
#include "stdafx.h"#include#include#include#include#includeusing namespace std;/** 异常类型 异常未必是对象,也可以抛出一个简单的int*/void readIntegerFile(const string& fileName,vector& dest){ ifstream istr
2016-10-19 20:40:29 1029
原创 C++ 异常处理-2
#include "stdafx.h"#include#include#include#include#includeusing namespace std;/**文件打开失败问题代码抛出一个std::exception类型的异常,这个类型需要包含头文件。如果文件打开失败就会抛出 Unable to open file XXX 行*/void readIntegerFil
2016-10-19 20:09:59 604
原创 C++ 异常处理-1
C错误处理标准使用函数返回的整数代码和errno宏表示错误,许多C++程序也采用可这种方法。每个线程都具有自己的errno值。Errno值用作线程局部整数变量,被调用函数使用这个变量将发生的错误告诉调用函数。l 抛出异常并捕获异常:使用异常要在程序中包括两个部分:处理异常的try’/catch结构和抛出异常的throw语句。演示异常处理最简单的示例是避免除0。这个示例抛出一个inval
2016-10-19 19:32:15 539
Xshell-6.0.0189p.zip
2020-02-26
Xftp-6.0.0183p.exe
2020-02-26
Android ViewPager 适配器 FragmentStatePagerAdapte
2014-01-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人