11 2017 档案
摘要:拷贝构造函数 如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。 拷贝构造函数第一个参数必须是一个引用类型。此参数几乎总是一个const的引用。拷贝构造函数在几种情况下都会被隐式地使用。因此,拷贝构造函数通常不应该是explicit的。 合成拷贝构
阅读全文
摘要:当定义一个类时,我们显式地或隐式地指定在此类型的对象拷贝、移动、赋值和销毁时做什么。一个类通过定义五种特殊的成员函数来控制这些操作。包括:拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符和析构函数。拷贝和移动构造函数定义了当用同类型的另一个对象初始化本对象时做什么。拷贝和移动赋值运算符定义
阅读全文
摘要:原创、转载请注明出处。 题意:经典的汉诺塔问题是有3根柱子,第一根柱子上有n个盘子,下面盘子比上面盘子大,要求把所有盘子移到第三根柱子上,过程中不能使得上面的盘子大于下面的盘子,且每次只能移动一个盘子,问最少需要多少步。 一开始想的是用普通递归,也就是状态空间搜索路径的方法,这样传的参数比较多。 在
阅读全文
摘要:异常是指存在于运行时的反常行为,这些行为超出了函数正常功能的范围。典型的异常包括失去数据库连接以及遇到意外输入等。处理反常行为可能是设计所有系统最难的一部分。 如果程序中含有可能引发异常的代码,那么通常也会有专门的代码处理问题。例如,如果程序的问题是输入无效,则异常处理部分可能会要求用户重新输入正确
阅读全文
摘要:构造函数基础知识 构造函数初始值列表 初始化与赋值 构造函数使用初始值列表还是在函数体中给数据赋值的区别在于,前者是初始化了它的数据成员,后者是对数据成员执行了赋值操作。 在很多类中,初始化和赋值的区别事关底层效率问题:前者直接初始化数据成员,后者则先初始化再赋值。 除了效率外更重要的是,一些数据成
阅读全文
摘要:原创、转载请注明出处 windows游戏编程,参考《深入浅出MFC》,《windows游戏编程之从零开始》by浅墨,程序在《windows游戏编程之从零开始》中的人物移动程序基础上改的,毕竟win_main函数之类的固定流程都差不多。 其中没有用MFC,只是深入浅出MFC中有理解windows程序设
阅读全文
摘要:p1变了,但是指向p1的p2没有变,结果是非法的(p2是空指针,非法访问空指针) 这里也是非法访问空指针,当我们想要通过p2改变p1时,上述代码实际上使得p2指向了另一个对象。 结合以上错误,当我们想要通过p2改变p1时,容易发生以下错误: 根据第一个案例可知,p1改变时,p2不变,所以p2访问了空
阅读全文
摘要:更多c++类的基本概念 每个类都会定义它自己的作用域。在类的作用域外,普通的数据和函数成员只能由对象、引用或者指针使用成员访问运算符来访问。对于类类型成员则使用作用域运算符访问。不论哪种情况,跟在运算符之后的名字都必须是对应类的成员。 作用域和定义在类外部的成员 一个类就是一个作用域很好地解释为什么
阅读全文
摘要:更多c++类的基本概念 这里继续介绍之前没有说的一些类的特性。这些特性包括:类型成员、类的成员的类内初始值、可变数据成员、内联成员函数、从成员函数返回*this、关于如何定义并使用类类型及友元类的更多知识。 类成员再探 定义一个类型成员 除了定义数据和函数成员之外,类还可以自定义某种类型在类中的别名
阅读全文
摘要:在C++语言中,我们使用访问说明符加强类的封装性: ·定义在public说明符之后的成员在整个程序内可被访问,public成员定义类的接口。 ·定义在private说明符之后的成员可以被类的成员函数访问,但是不能被使用该类的代码访问,private部分封装(即隐藏了)类的实现细节。 作为接口的一部分
阅读全文
摘要:在C++语言中,我们使用类定义自己的数据类型。通过定义新的类型来反应待解决问题中的各种概念,可以使我们更容易编写、调试和修改程序。 这里主要关注数据抽象的重要性。数据抽象能帮助我们将对象的具体实现与对象所能执行的操作分离开来。 类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程(
阅读全文
摘要:更多类的基本概念 对于抽象数据类型来说,我们通过它的接口来使用它的对象而不知道这个类有哪些数据成员。与之相反,若一个类允许他的用户直接访问他的数据成员,并且要求由用户来编写操作,则这个类不是一个抽象数据类型。 设计类 类的接口包括用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以
阅读全文
摘要:更多相关内容见http://www.cnblogs.com/mu-ye/p/7754368.html 抽象基类通常代表一个通用概念。 纯虚函数 把一个函数声明为纯虚函数可以清晰明了的告诉用户当前这个函数是没有实际意义的。 和普通函数不一样,一个纯虚函数无须定义。我们通过在函数体的位置(即在声明语句的
阅读全文
摘要:更多相关内容见http://www.cnblogs.com/mu-ye/p/7754368.html 如前所诉,在C++语言中,当我们使用基类的引用或指针调用一个虚函数时会执行动态绑定。因为我们直到运行时才知道到底调用了哪个版本的虚函数,所以所有虚函数都必须有定义。通常情况下,如果我们不使用某个函数
阅读全文

浙公网安备 33010602011771号