【C++笔记整理—第1期】

devtools/2024/10/18 7:56:53/

C++笔记整理

本系列是C++语言基础语法的学习笔记整理。

文章目录

  • C++笔记整理
    • 结构体
      • 定义及初始化
      • 结构体数组
      • 用指向结构体变量的指针构成链表
      • 函数传参的三种形式
      • 动态分配和撤销内存空间
      • 用typedef声明新的类型名
    • 类和对象
      • 概述
      • 特点
      • 面向对象的软件工程
    • 类的声明和对象的定义
      • 声明类类型
    • 类的成员函数
      • 在类外定义成员函数
      • 成员函数的存储方式

结构体

C++不同于C的结构体的定义:结构体中不仅可以包括数据,又可以包括函数

定义及初始化

struct Student{int age;char name[20];float score;
};
//这相当于定义了一个类型,然后就可以实例化,只定义并不分配实际的内存单元
Student student1 = {23, "JinLong", 93.5};//方法2,在定义结构体的时候就实例化
struct Student{int age;char name[20];float score;
}student1 = {23, "JinLong", 86.5};

结构体数组

#include <iostream>
#include <string>//定义一个结构体,代表书籍信息
struct Book {std::string title;  // 书名std::string author; // 作者int year;  // 出版年份 
};int main() {// 创建一个Book结构体数组Book library[3];//初始化数组中的元素library[0] = {"C++ Primer", "Lippman", 2012};library[1] = {"The C++ Programming Language", "Bjarne Stroustrup", 2013};library[2] = {"Effective Modern C++", "Scott Meyers", 2014};//输出每本书的信息for(int i = 0; i < 3; i++) {std::cout << "Book: " << i + 1 << ":\n";std::cout << "Title: " << library[i].title << "\n";} return 0;
} 
```
### 指向结构体变量的指针一个结构体变量的指针就是存储该变量的起始地址~~~c++
struct Student{int age;string name;
};
Student stu;
Student *p = &stu;
//则此时的(*p)就是只想该结构体变量

用指向结构体变量的指针构成链表

一般链表中的节点包含的数据包括两部分,一部分是用户实际需要的数据,另一部分是下一个节点的地址,这样的好处是,各个节点的地址不一定要相邻,通过上一个节点中存储的地址就可以找到下一个节点。

这一个也需要编程复现。

函数传参的三种形式

动态分配和撤销内存空间

不同于C语言中利用malloc和free来分配和撤销内存空间,C++提供了运算符new和delete来取代,注意是运算符。

int p* = new int(3);  // 表示分配一个int大小的内存空间,返回首元素的地址,然后通过指定的指针,指向该地址。
delete 指针变量;
delete [] 指针变量; // 对数组

用typedef声明新的类型名

typedef int INTEGER;
INTEGER a = 1;

类和对象

概述

面向对象的程序的基础是类,类也就是一个对象,对象包括数据和行为。下面是四个概念:

对象和类、封装与信息隐蔽、抽象、继承于重用、多态性

特点

类和对象的作用

一组数据是与一组操作相对应的,如果把二者独立开来,对应成一组数据,多组操作或者多组数据,一组操作,此时就是面向过程的语言,它主要是以算法函数为核心。但是面向对象的语言,一般是以对象作为基础,也可以说为基于类的语言,通过信息对多个对象进行调用,就构成了程序。

面向对象的软件工程

  • 面向对象分析OOA:归类
  • 面向对象设计OOD:类需要的属性和行为描述。
  • 面向对象编程OOP:选择编程语言实现OOD的描述
  • 面向对象测试OOT:以类作为测试的基本单元进行测试
  • 面向对象软件维护OOSM

类的声明和对象的定义

类是对象的抽象,而对象是类的具体实例

声明类类型

class Student
{int num;char sex;void display(){cout << "sex:" << sex <<endl;}
};
Student stu1, stu2;
//一般形式
class 类名
{public:公用的数据和成员函数private:私有的数据和成员函数
}

类的成员函数

在类外定义成员函数

这种做法不同于python中的做法,在C++中,可以在一个类中先声明成员函数,然后在类的外部在详细定义该函数,只不过需要指定定义域。

class Student
{public:void display();  //private也可以声明,也可以实现内部声明,外部实现,只是限定了访问权限private:int num;string name;
};
void Student::display()
{cout << "num:" << num <<endl;
};
Student stu1, stu2;

成员函数的存储方式

一般一个类占用的而存储空间的大小只和定义的数据的大小有关系,成员函数的代码段的存储方式是相同的,都不占用对象的存储空间。

在逻辑上,可以说该对象的成员函数,比如某某对象的成员函数。

在内存管理上,成员函数的存储方式,不存放在对象的空间内。

但是从逻辑上,成员函数适合数据一起封装在一个对象中的,通过设立一个专门的this指针,来区分不同对象使用相同的成员函数。


http://www.ppmy.cn/devtools/56443.html

相关文章

如何使用 asyncio.log 启用 Debug 日志

如何使用 asyncio.log 启用 Debug 日志 1. 导入必要的模块2. 配置日志记录3. 启用 asyncio 的调试日志4. 示例代码总结 在 Python 中使用 asyncio 模块时&#xff0c;有时我们需要查看调试日志来了解程序的运行情况。本文将介绍如何使用 asyncio.log 启用调试日志。 1. 导入必…

Python+requests+pytest+excel+allure 接口自动化测试实战

定义&#xff1a; Unittest是Python标准库中自带的单元测试框架&#xff0c;Unittest有时候也被称为PyUnit&#xff0c;就像JUnit是Java语言的标准单元测试框架一样&#xff0c;Unittest则是Python语言的标准单元测试框架。 Pytest是Python的另一个第三方单元测试库。它的目的…

vue3 window.location 获取正在访问的地址,也可以通过useRoute来获取相关信息。

1、一般我们在开发的vue3项目的时候&#xff0c;地址是这样&#xff1a;http://192.168.1.101:3100/#/login 然后我们在布署完成以后一般是这样https://xxx.yyyyy.com/uusys/#/login 其实xxx可以是www&#xff0c;也可以是一个二级域名 yyyyy.com是域名&#xff0c;uusys一般…

Dubbo 3.x源码(22)—Dubbo服务引用源码(5)服务引用bean的获取以及懒加载原理

基于Dubbo 3.1&#xff0c;详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo3.1版本的服务引入的总体流程&#xff0c;当然真正的服务远程引入、以及配置迁移啥的都还没讲&#xff0c;但是本次我们先不接着讲MigrationRuleListener#onRefer方法&#xff0c;而是先…

【2024.6.23】今日科技时事:科技前沿大事件

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

适配器模式(Adapter Pattern)

适配器模式&#xff08;Adapter Pattern&#xff09; 定义 它的功能是将一个类的接口变成客户端锁期望的另一种接口&#xff0c;从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作。 属于结构型设计模式。 适用场景 已经存在的类&#xff0c;它的方法和需求…

AI 与 Python 实战干货:基于深度学习的图像识别

《AI 与 Python 实战干货&#xff1a;基于深度学习的图像识别》 今天咱不啰嗦&#xff0c;直接上干货&#xff01; 在 AI 领域&#xff0c;特别是图像识别方面&#xff0c;Python 简直是一把利器。咱就以手写数字识别为例&#xff0c;来看看怎么用 Python 实现一个深度学习模…

电通出席2024年世界经济论坛(WEF),重申推动可持续发展创新和人才培育的承诺

中国&#xff0c;上海——电通将出席世界经济论坛2024年新领军者年会&#xff08;夏季达沃斯&#xff09;&#xff0c;本次大会将于6月25日至6月27日在中国大连举行。 2024年世界经济论坛主题为“未来增长的新前沿”&#xff0c;将聚焦于全球经济复苏、通胀缓解&#xff0c;以…