C++学习笔记之基础篇

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

  C++是一种功能强大、灵活的编程语言,广泛应用于系统软件、应用软件、设备驱动、嵌入式软件、高性能服务器和客户端应用程序、游戏引擎等。

一、C和C++的区别

  C 和 C++ 是两种广泛使用的编程语言,它们之间有许多区别。C++ 是在 C 的基础上发展而来的,增加了许多新特性和功能。以下是 C 和 C++ 之间的一些主要区别:

  1. 面向对象编程
    C:是面向过程的编程语言,主要通过函数和过程进行编程。
    C++:是面向对象的编程语言,支持类和对象。C++ 中的面向对象特性包括封装、继承和多态性。
  2. 数据抽象和封装
    C:没有直接支持数据抽象和封装的语言特性,程序员需要通过结构体和函数进行模拟。
    C++:引入了类和对象,通过访问控制符(public、private、protected)实现数据抽象和封装。
  3. 继承
    C:不支持继承,无法通过一个类继承另一个类的属性和方法。
    C++:支持继承,可以通过基类和派生类的关系重用代码。
  4. 多态性
    C:不支持多态性,函数重载和运算符重载也不支持。
    C++:支持多态性,包括函数重载和运算符重载,以及通过虚函数实现的动态多态性。
  5. 标准库
    C:C 标准库提供了有限的函数,如 stdio.h、stdlib.h 等。
    C++:C++ 标准库不仅包含 C 标准库的所有功能,还增加了如 STL(标准模板库),包括容器、迭代器和算法等。
  6. 内存管理
    C:内存管理主要通过 malloc、calloc 和 free 等函数进行。
    C++:内存管理可以通过 new 和 delete 操作符进行,此外还支持智能指针(如 std::unique_ptr 和 std::shared_ptr)来自动管理内存。
  7. 输入输出
    C:使用标准的输入输出库函数,如 printf 和 scanf。
    C++:使用更高级的 I/O 流库,如 cin 和 cout,支持类型安全和操作符重载。
  8. 函数和参数
    C:函数参数不能有默认值。
    C++:函数参数可以有默认值,支持更灵活的函数调用。
  9. 命名空间
    C:没有命名空间,所有标识符共享一个全局命名空间,容易发生命名冲突。
    C++:引入了命名空间,通过 namespace 关键字定义命名空间,避免命名冲突。
  10. 模板
    C:不支持模板。
    C++:支持模板,可以编写泛型代码,进行代码复用,如模板函数和模板类。
  11. 异常处理
    C:不支持异常处理,错误处理通常通过返回值和错误代码进行。
    C++:支持异常处理,通过 try、catch 和 throw 关键字处理异常。
  12. 兼容性
    C:是 C++ 的子集,大部分 C 代码可以在 C++ 编译器下编译,但并非所有 C++ 代码都能在 C 编译器下编译。
    C++:可以包含 C 代码并进行编译,但需要注意一些语法和特性的区别。

二、C++的灵魂——类

  类(Class)可以被称为这门语言的“灵魂”,因为它不仅是面向对象编程(OOP)的核心,也是实现代码重用、模块化和抽象的关键。我们可以把类看作是c语言中结构体的升级版,它可以既可以包含变量,也可以包含函数(我们再leecode刷的题就是在进行类的编写)。
  这里可以打个比方说明一下什么是类,比如有一条小狗,小狗有名字叫旺财,旺财的年龄是 2 岁,同时旺财会汪汪的叫,也能跑。我们统称狗这个为类,类是我们抽象出来的,因为狗不只有上面的属性,还有体重,毛发的颜色等等,我们只抽象出几种属性成一个类,而具体到哪条狗就叫对象。

2.1 类的定义与成员

  类是用户自定义的数据类型,由数据成员(attributes)和函数成员(methods)组成。类用于指定对象的形式,它包含了数据表示法和用
于处理数据的方法。
  类的定义包括类的名称、数据成员以及成员函数的声明与定义。C++中的类有三种访问控制方式:public、protected和private。这决定了类的成员在类外部的可访问性。

  • public:所有成员可以在类外部直接访问。
  • private:成员只能在类内部访问,类的外部不能直接访问这些成员。默认情况下,类的成员是private。
  • protected:成员只能在类内部或派生类中访问,但不能在类的外部直接访问。

  在C++中,类的成员可以分为几种不同的类型,每种类型都有其独特的用途和特性。了解这些成员类型有助于更灵活地设计和实现类。

  • 数据成员(Data Members)是类中定义的变量,用于存储类对象的状态或属性。根据访问控制级别,它们可以是公有、私有或受保护的。
    • 实例数据成员:这些是为每个对象单独存储的变量。每个对象都有自己的一份数据成员的副本。
    • 静态数据成员:静态数据成员在所有对象之间共享,属于整个类而非某个对象。它们在类的定义中声明,并在类外部定义和初始化。
  • 成员函数(Member Functions)是操作类对象的函数。根据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值