摘要: 1. 复数类需要解决的问题 ——下面的复数解决方案是否可行? 不可行,+ 操作符只提供对C++ 基本数据类型的运算,不支持类的相加运算。 【编程实验】复数的加法操作 30-1.cpp #include <stdio.h> class Complex { int a; int b; public: C 阅读全文
posted @ 2018-12-09 17:39 梦心之魂 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 1. 函数重载的回顾 (1)函数重载的本质为相互独立的不同函数 (2)C++中通过函数名和函数参数确定函数调用,函数名和参数列表组成唯一的标识 (3)无法直接通过函数名得到重载函数的入口地址 (4)函数重载必然发生在同一个作用域中 【编程实验】类成员函数指针 #include <iostream> 阅读全文
posted @ 2018-12-09 17:38 梦心之魂 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 1. 友元的概念 (1)友元是C++中的一种关系,友元关系发生在函数与类之间或类与类之间 (2)友元关系是单项的,不能传递 class Point { double x; double y; friend void func(Point& p);//声明func为Point类的友元函数 } void 阅读全文
posted @ 2018-12-09 17:37 梦心之魂 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 1. 构造函数的回顾 (1)关于构造函数 ①类的构造函数用于对象的初始化 ②构造函数与类同名并且没有返回值(思考:无返回值如何判断构造函数的执行结果?) ③构造函数在对象定义时自动被调用 (2)构造函数的真相 ①构造函数只提供自动初始化成员变量的机会,但不能保证初始化逻辑一定成功。它只能决定对象的初 阅读全文
posted @ 2018-12-09 17:29 梦心之魂 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 1、未完成的需求 统计在程序运行期间某个类的对象数目 保证程序的安全性(不能使用全局变量) 随时可以获取当前对象的数目(Failure) 【编程实验】解决方案的尝试 26-1.cpp #include <stdio.h> class Test { public: static int cCount; 阅读全文
posted @ 2018-12-09 17:22 梦心之魂 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 0.C语言的static关键字 https://www.cnblogs.com/hoiday/protected/p/9998577.html (1)static关键字指明变量的“静态”属性——static修饰的局部变量和全局变量存储在程序静态区(静态变量,只能被初始化一次) (2)static关键 阅读全文
posted @ 2018-12-09 17:20 梦心之魂 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 1. 关于析构的疑问 (1)单个对象创建时构造函数的调用顺序 ①调用父类的构造函数(后续课程中讲解) ②调用成员变量的构造函数(调用顺序与声明顺序相同) ③调用类自身的构造函数 ▲析构函数与对应构造函数的调用顺序相反:即类自身的析构→成员变量→父类析构 (2)多个对象的析构:析构函数顺序与构造函数顺 阅读全文
posted @ 2018-12-09 17:14 梦心之魂 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 1. 有趣的问题 (1)程序意图:在Test()中以0作为参数调用Test(int i)来将成员变量mi初始值设置为0. (2)运行结果:成员变量mi的值为随机值(没达到目的!) 【实例分析】有趣的问题 23-1.cpp #include <stdio.h> class Test { private 阅读全文
posted @ 2018-12-09 16:34 梦心之魂 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 1. 对象的销毁 (1)对象的销毁 生活中的对象都是被初始化后才上市的(从而引入了构造函数) 生活中的对象被销毁前会做一些清理工作 (2)问题:C++中如何清理需要销毁的对象? 一般而言,需要销毁的对象都应该做清理 解决方案: 为每个类都提供一个public的free函数 对象不再需要时立即调用fr 阅读全文
posted @ 2018-12-09 16:32 梦心之魂 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 1. 对象的构造顺序 ———C++中的类可以定义多个对象,那么对象构造顺序是怎样的? (1)对于局部对象:当程序执行流到达对象的定义语句时进行构造 (2)对于堆对象 ①当程序执行流到达new语句时创建对象 ②使用new创建对象将自动触发构造函数的调用 (3)对于全局对象 ①对象的构造顺序是不确定的 阅读全文
posted @ 2018-12-09 16:21 梦心之魂 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 1. 类成员的初始化 (1)C++中提供了初始化列表,可以对类的成员变量进行初始化 (2)语法规则: ClassName::ClassName():m1(v1), m2(v2,v3),m3(v3) { //其它初始化操作 } (3)注意事项 ①成员的初始化顺序与成员的声明顺序相同。而与初始化列表中的 阅读全文
posted @ 2018-12-09 16:12 梦心之魂 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 1. 两个特殊的构造函数 无参构造函数 拷贝构造函数 参数形式 没有参数的构造函数 参数为const class_name&的构造函数 默认情况 当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空 当类中没有定义拷贝构造函数时,编译器默认提供一个拷贝构造函数,简单的进行成员变 阅读全文
posted @ 2018-12-09 15:55 梦心之魂 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 1. 带参数的构造函数 (1)构造函数可以根据需要定义参数 (2)一个类中可以存在多个重载的构造函数 (3)构造函数的重载遵循C++重载规则 【友情提示】对象的定义和声明不同 ①对象定义:申请对象的内存空间并调用构造函数(如Test t;//定义并调用构造函数) ②对象声明:告诉编译器己经存在一个对 阅读全文
posted @ 2018-12-09 15:26 梦心之魂 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 1. 对象的初始化 (1)从程序设计的角度看,对象只是变量,因此: ①在栈上创建对象时,成员变量初始化为随机值 ②在堆上创建对象时,成员变量初始化为随机值 ③在静态存储区创建对象时,成员变量初始化为0值 【编程实验】成员变量的初始化 17-1.cpp #include <stdio.h> class 阅读全文
posted @ 2018-12-09 15:17 梦心之魂 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 1. 类的关键字 (1)struct在C语言中己经有了自己的含义,必须继续兼容 (2)在C++中提供了新的关键字class用于类定义 (3)class和struct的用法完全相同 用struct定义的类中所有成员默认访问级别为public 用class定义的类中所有成员默认访问级别为private 阅读全文
posted @ 2018-12-09 12:36 梦心之魂 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 1. 封装的基本概念 (1)类通常分为两个部分:类的实现细节、类的使用方式。 当使用类时,不需要关心其实现细节 当创建类时,才需要考虑其内部实现细节 (2)根据经验,并不是类的每个属性都是对外公开的,但一些属性是对外公开的。 (3)必须在类的表示法中定义属性和行为的公开级别:类似文件系统中文件的限制 阅读全文
posted @ 2018-12-09 11:48 梦心之魂 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 1. 类之间的基本关系 (1)继承 ① 从已存在类细分出来的类和原类之间具有继承关系(is-a) ② 继承的类(子类)拥有原类(父类)的所有属性和行为 (2)组合 ① 一些类的存在必须依赖于其它的类,这种关系叫组合 ② 组合的类在某一个局部上由其它的类组成 2. 类的表示法 类的表示法: 类的表示法 阅读全文
posted @ 2018-12-09 11:41 梦心之魂 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 1.面向对象基本概念 ——日常生活中,我们都习惯于对事物进行分类。那么,这种分类的思想是否可以引入程序设计中呢? (1)面向对象的意义在于 ①将日常生活中习惯的思维方式引入程序设计中 ②将需求中的概念直观的映射到解决方案中 ③以模块为中心构建可复用的软件系统 ④提高软件产品的可维护性和可扩展性 (2 阅读全文
posted @ 2018-12-09 11:22 梦心之魂 阅读(99) 评论(0) 推荐(0) 编辑