前言:此部分知识点零碎,需要耐心去学习,推荐读者分三部分进行学习
第一部分:一到八
第二部分:九
第三部分:十到十四
目录
一、面向过程和面向对象初步认识
二、类的引入
三.类的定义
四.类的访问限定符及封装
C++中struct和class的区别是什么?
封装
五.类的作用域
六.类的实例化
七.类对象模型
如何计算类对象的大小
结构体内存对齐规则
类里面的成员函数又存在哪里呢?
八.this指针
九.类的6个默认成员函数
构造函数
类型的分类(重要)
默认构造函数
析构函数
拷贝构造函数
默认生成的构造函数:
赋值运算符重载
运算符重载
赋值运算符重载
编译器默认生成赋值重载
小问题
const成员
取地址及const取地址操作符重载(了解)
十.再谈构造函数
声明、定义、初始化三个概念
构造函数体赋值
初始化列表
初始化列表的意义
小问题:
explicit关键字
发生隐式类型转换的原因:
解决方法:
十一.static成员
实现一个类,计算中程序中创建出了多少个类对象。
关于_Scount的访问
十二.C++11 的成员初始化新玩法
十三.友元
友元函数
<<重载的实现
>>重载的实现
友元类
十四.内部类
概念及特性
类大小的计算
用内部类实例化对象
一、面向过程和面向对象初步认识
- C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
- C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
以设计一个外卖系统为例进行理解
面向过程:关注下单,接单,送餐这些过程。体现到代码层面就是--方法/函数
面向对象:关注实现类对象及类对象间的关系,用户,商家,骑手以及他们之间的关系。体现到代码层面--类的设计及类之间的关系
C++ 基于面向对象:面向对象和面向过程混编 原因:C++兼容C
java:纯面向对象的
二、类的引入
一个简单的学生类:
struct Student { char name[10]; int age; int id; }; int main() { struct Student s1; //兼容C的用法 Student s2; //升级到类,Student类名,也是类型 strcpy(s1.name, "张三"); s1.id = 1; s1.age = 10; strcpy(s2.name, "张三"); s2.id = 1; s2.age = 10; return 0; }
讯享网可能有人会说,这不是结构体吗?原因就是:C++兼容C里面结构体的用法,同时struct在C++里面升级成了类
C语言中定义一个变量只能这样用
C++中则可以省略掉struct,同时在C++中,更喜欢将s1,s2称之为对象
C++类与结构体不同的是除了可以定义变量,还可以定义函数/方法
讯享网struct Student { //成员变量 char _name[10]; int _age; int _id; //成员函数/成员方法 void Init(const char* name,int age,int id ) { strcpy(_name, name); _age = age; _id = id; } void Print() { cout << _name << endl; cout << _age << endl; cout << _id << endl; } }; int main() { Student s1; //兼容C的用法 Student s2; //升级到类,Student类名,也是类型 s1.Init("张三", 18, 00); s1.Print(); return 0; }然而上面结构体的定义,在C++中更喜欢用class来代替
三.类的定义
class 为 定义类的 关键字, ClassName 为类的名字, {} 中为类的主体,注意 类定义结束时后面 分号 。class className { // 类体:由成员函数和成员变量组成 }; // 一定要注意后面的分号

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/127999.html