2025年C++入门(二)之类与对象

C++入门(二)之类与对象前言 此部分知识点零碎 需要耐心去学习 推荐读者分三部分进行学习 第一部分 一到八 第二部分 九 第三部分 十到十四 目录 一 面向过程和面向对象初步认识 二 类的引入 三 类的定义 四 类的访问限定符及封装 C

大家好,我是讯享网,很高兴认识大家。

前言:此部分知识点零碎,需要耐心去学习,推荐读者分三部分进行学习

第一部分:一到八

第二部分:九

第三部分:十到十四

目录

一、面向过程和面向对象初步认识

二、类的引入

三.类的定义 

四.类的访问限定符及封装

 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 为类的名字, {} 中为类的主体,注意 类定义结束时后面 分号
小讯
上一篇 2025-04-04 14:22
下一篇 2025-02-05 19:29

相关推荐

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