本篇开始讲C++中的核心知识点,也是C++与C语言最大的区别,那就是类。
总结放于前:
1.面向过程: 以函数为单位把代码组织起来的
2.面向对象: 生活中事物描述成对象,对象之间产生关系,从而组织成程序;对象=数据(数据类型)+行为(函数)
1.编程语言分类及区别
按照编程语言的特点可以将编程语言分为面向对象和面向过程。
(1)面向对象: 以类和对象为中心,组成一个程序,对象是类的一个实例化。
- 包括:C++,JAVA,C#,python,go
- 面向对象的模块化效果更好,封装性更好,开发效率高
(2)面向过程: 以函数为单位把代码组织起来的
- 偏底层C
- 程序运行效率高)
2. 面向对象的概念
生活中事物描述成对象,对象之间产生关系,从而组织成程序
对象=数据(数据类型)+行为(函数)
3.通过伪代码表示过程和对象的区别
伪代码: 编译不能通过,但可以通过代码明显得出代码的思维逻辑
3.1 面向过程实现洗衣功能
3.1.1 C语言描述:结构体只是描述外观性质
struct 洗衣机{
int nWidth;
int nHeight;
int nLength;
int nType;//类型(滚筒,波轮)
int nBland;//品牌
};
定义结构体数据类型:
洗衣机 海尔洗衣机;
冰箱 海尔冰箱;
3.1.2 C语言中表达洗衣机可以洗衣服
void 洗衣服(洗衣机,衣服)
{
}
3.1.3 调用方式:通过函数指定洗衣机,再指定衣服
洗衣服(海尔洗衣机,脏衣服);
有可能会出现以下这种情况,洗衣服的功能赋给冰箱,通过强制转换也是可以编译通过的
洗衣服(海尔冰箱,洗衣服);
正常描述的话:洗衣机有什么样的功能,而不是先有功能才描述洗衣机和衣服
3.2 面向对象实现洗衣功能
3.2.1C++语言描述
不用指定洗衣机,因为本身就具有这样的功能,只需要把衣服丢进去即可
struct 洗衣机{
int nWidth;
int nHeight;
int nLength;
int nType;//类型(滚筒,波轮)
int nBland;//品牌
void 洗衣服(衣服);
};
3.2.2 C++语言中的调用
C++中怎么洗衣服:洗衣机本身就有相关的功能
洗衣机 海尔洗衣机;
海尔洗衣机.洗衣服(脏衣服);
下面这种海尔冰箱洗衣服
的情况就不可能出现,因为它本身就没有相关功能
冰箱 海尔冰箱;
海尔冰箱.洗衣服(脏衣服);
总结: 洗衣机是类,海尔洗衣机是对象也叫实例化,海尔洗衣机洗脏衣服就是一个实例化
。
4.视频学习地址:C++57个入门知识点_14 面向对象及类
5.学习笔记:
面向对象:类 (以类和对象为中心C++,JAVA,C#,python)
面向过程:函数 (以函数为单位把代码组织起来的,偏底层C)
脚本语言:js,php,asp,jsp
编译语言:C C++
基于虚拟机:java C#,python
go
面向对象:生活中事物描述成对象,对象之间产生关系,从而组织成程序
对象?找不到对象(object)
对象=数据(数据类型)+行为(函数)
洗衣机 冰箱等等
洗衣机:
功能上:洗衣服
外观:类型(滚筒,波轮)
品牌(小天鹅,海尔)
长、宽、高
型号
伪代码:
C语言描述:结构体只是简单描述了外观性质
struct 洗衣机{
int nWidth;
int nHeight;
int nLength;
int nType;//类型(滚筒,波轮)
int nBland;//品牌
};
关于洗衣机,上面的代码缺少了功能的描述
C语言中表达洗衣机可以洗衣服:
void 洗衣服(洗衣机,衣服)
{
}
C语言的描述,围绕函数去写
洗衣机 海尔洗衣机;
冰箱 海尔冰箱;
调用方式:通过函数指定洗衣机,再指定衣服
洗衣服(海尔洗衣机,脏衣服);
洗衣服和洗衣机的关联不够强,应该是洗衣机本身就有洗衣服的功能,C语言中就将功能分隔开了
有可能会出现以下这种情况,洗衣服的功能赋给冰箱,通过强制转换也是可以编译通过的,这就导致:洗衣服(海尔冰箱,洗衣服);
正常描述的话:洗衣机有什么样的功能,而不是先有功能才描述洗衣机和衣服
//C++语言描述,不用指定洗衣机,因为本身就具有这样的功能,只需要把衣服丢进去即可
struct 洗衣机{
int nWidth;
int nHeight;
int nLength;
int nType;//类型(滚筒,波轮)
int nBland;//品牌
void 洗衣服(衣服);
};
C++中怎么洗衣服:洗衣机本身就有相关的功能
洗衣机 海尔洗衣机;
海尔洗衣机.洗衣服(脏衣服);
冰箱 海尔冰箱;
海尔冰箱.洗衣服(脏衣服);//这种情况就不可能出现,因为它本身就没有相关功能