![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
--------【面向对象】
文章平均质量分 66
加油11
模仿模仿再模仿!
展开
-
对象的构造顺序
1 问题C++ 中的类可以定义多个对象,那么对象构造的顺序是怎么样的呢?2 对象的构造顺序对于局部对象 当程序执行流到达对象的定义语句时进行构造。下面程序中的对象构造顺序是什么?实例分析:局部对象的构造顺序#include class Test{private: int mi;public: Test(int i) {原创 2018-01-21 11:04:06 · 444 阅读 · 0 评论 -
C++种的字符串类
1 历史遗留问题C语言不支持真正意义上的字符串;C语言用字符数组和一组函数实现字符串操作;C语言不支持自定义类型,因此无法获得字符串类型。2 解决方案从C到C++的进化过程引入了自定义类型;在C++中可以通过类完成字符串类型的定义;问题:C++中的原生类型系统是否包含字符串类型? 不。3 标准库中的字符串类C++ 语言直接支持C语言的所有概念;C+...原创 2018-01-31 16:09:25 · 389 阅读 · 0 评论 -
对象的构造
1 问题:对象中成员变量的初始值是多少?小实验:下面的类定义中成员变量i和j的初始值是多少?编程实验:成员变量的初始值#include <stdio.h>class Test{private: int i; int j;public: int getI() { return i; } int getJ() { retur...原创 2018-01-16 16:54:22 · 243 阅读 · 0 评论 -
赋值操作符重载
1 关于赋值的疑问什么时候需要重载赋值操作符?编译器是否提供默认的赋值操作?编译器为每个类默认重载了赋值操作符。默认的赋值操作符仅完成浅拷贝。当需要进行深拷贝时必须重载赋值操作符。赋值操作符与拷贝构造函数有相同的存在意义。编程实验:默认赋值操作符重载#include <iostream>#include <string>using n...原创 2018-02-08 18:07:43 · 731 阅读 · 0 评论 -
初探C++标准库
1 有趣的重载操作符其意义是将整数1按位左移2位,即:0000 0001 -> 0000 0100重载操作符,将变量或常量左移到一个对象中!编程实验:重载左移操作符#include const char endl = '\n';class Console{public: Console& operator int i) {原创 2018-01-29 16:17:43 · 221 阅读 · 0 评论 -
完善的复数类
1 完善的复数类利用操作符重载 统一复数与实数的运算方式统一复数与实数的比较方式编程实验:复数类的实现Complex.h#ifndef _COMPLEX_H_#define _COMPLEX_H_class Complex{ double a; double b;public: Complex(double a = 0, do原创 2018-01-28 20:49:34 · 333 阅读 · 0 评论 -
初始化列表的使用
1 问题类中是否可以定义const成员?小实验下面的类定义是否合法? 如果合法,ci的值是什么,存储在哪里?class Test{private: const int ci;public: int getCI(){return ci;}};// 编译通过但是定义对象时编译出错。编程实验:类中的const成员#include clas原创 2018-01-20 11:15:14 · 300 阅读 · 0 评论 -
操作符重载的概念
1 需要解决的问题下面的复数解决方案是否可行?编程实验:复数的加法操作#include class Complex { int a; int b;public: Complex(int a = 0, int b = 0) { this->a = a; this->b = b; } in原创 2018-01-27 17:51:35 · 273 阅读 · 0 评论 -
类中的函数重载
1 函数重载的回顾函数重载的本质为相互独立的不同函数;C++中通过函数名和函数参数确定函数调用;无法直接通过函数名得到重载函数的入口地址;函数重载必然发生在同一个作用域中。2 类中的重载类中的成员函数可以进行重载: 构造函数的重载普通成员函数的重载静态成员函数的重载问题:全局函数,普通成员函数以及静态成员函数之间是否可以构成重载?普通成员函数和静态成员函原创 2018-01-26 17:06:28 · 309 阅读 · 0 评论 -
友元的尴尬能力
1 友元的概念什么是友元?友元是C++中的一种关系;友元关系发生在函数与类之间或者类与类之间;友元关系是单项的,不能传递。 函数是类的友元。2 友元的用法在类中以friend关键字声明友元;类的友元可以是其它类或者具体函数;友元不是类的一部分;友元不受类中访问级别的限制;友元可以直接访问具体类的所有成员。3 友元的语法编程实原创 2018-01-26 11:59:43 · 275 阅读 · 0 评论 -
神秘的临时对象
1 有趣的问题下面的程序输出什么?为什么?实例分析:有趣的问题#include class Test { int mi;public: Test(int i) { mi = i; } Test() { Test(0); } void print() { printf("mi原创 2018-01-23 11:36:45 · 316 阅读 · 0 评论 -
数组操作符的重载
1 问题string类对象还具备C方式字符串的灵活性吗?还能直接访问单个字符串吗?2 字符串类的兼容性string类最大限度地考虑了C字符串的兼容性。可以按照使用C字符串的方式使用string对象。编程实验:用C方式使用string类#include #include using namespace std;int main(){ string原创 2018-02-01 17:43:14 · 438 阅读 · 0 评论 -
二阶构造模式
1 构造函数的回顾关于构造函数: 类的构造函数用于对象的初始化;构造函数与类同名并且没有返回值;构造函数在对象定义时自动被调用。2 问题1.如何判断构造函数的执行结果?(目前无法判断) 2.在构造函数中执行return语句会发生什么?(构造函数直接 返回,执行结束) 3.构造函数执行结束是否意味着对象构造成功?(不)编程实验:异常的构造函数#inclu原创 2018-01-24 21:26:43 · 442 阅读 · 0 评论 -
类的静态成员变量和静态成员函数
1 成员变量的回顾通过对象名能够访问public成员变量。每个对象的成员变量都是专属的。成员变量不能在对象之间共享。2 新的需求统计在程序运行期间某个类的对象数目。保证程序运行的安全性(不能使用全局变量)。随时可以获取当前对象的数目。编程实验:解决方案的尝试#include class Test{private: int mCount原创 2018-01-23 20:42:54 · 934 阅读 · 0 评论 -
类的真正形态
1 类的关键字问题:经过不停的改进,结构体struct变得越来越不像它在C语言中的样子了!struct在C语言中已经有了自己的含义,必须继续兼容。在C++中提供了新的关键字class用于类定义。class和struct的用法是完全相同的。class和struct有什么区别在使用struct定义类时,所有成员的默认访问级别为public。在用class定义类时,所有成员的原创 2018-01-16 11:29:13 · 234 阅读 · 0 评论 -
对象的销毁
1 对象的销毁生活中的对象都是被初始化后才上市的。生活中的对象被销毁前会做一些清理工作。问题:C++ 中如何清理需要销毁的对象?一般而言,需要销毁的对象都应该做清理。解决方案: 为每一个类提供一个public的free函数;对象不再需要时立即调用free函数进行清理。存在的问题: free只是一个普通的函数,必须显示的调用;对象销毁前没有做清理,很可能造成原创 2018-01-22 20:36:46 · 690 阅读 · 0 评论 -
类与封装的概念
1 类的组合电脑一般而言是由CPU、内存、主板、键盘和硬盘等部件组合而成。思考 (1)学习电脑组装需要多少时间? (2)学习电脑组装是否需要学习显示器、键盘、鼠标、主板、内存等部件的设计与制造?2 类的封装类通常分为以下两个部分 类的实现细节类的使用方式当使用类时,不需要关心其实现细节;当创建类时,不需要考虑其内部实现细节。例: 普通原创 2018-01-15 11:17:11 · 758 阅读 · 0 评论 -
进阶面向对象
1 你考虑过么?日常生活中,我们都习惯对事物进行分类。那么,这种分类的思想是否可以引入程序设计中呢?2 面向对象的基本概念面向对象的意义在于将日常生活中习惯的思维方式引入程序设计中;将需求中的概念直观的映射到解决方案中;以模块为中心构建可复用的软件系统;提高软件产品的可维护性和可扩展性。类和对象是面向对象中的两个基本概念:类:指的是一类事物,是一个抽原创 2018-01-14 11:20:24 · 190 阅读 · 0 评论 -
函数对象分析
1 客户需求函数可以获得斐波那契数列每项的值。每调用一次返回一个值。函数可根据需要重复使用。编程实验:第一个解决方案#include #include using namespace std;int fib(){ static int a0 = 0; static int a1 = 1; int ret = a1; a1原创 2018-02-05 17:48:41 · 412 阅读 · 0 评论