C++学习笔记一--C++语言概述

目录

前言

1.C++语言的发展简史

2.C++语言的特点

1.C++是一种面向对象的编程语言

2.C++语言是源自实践

3.C++语言兼容C语言

4.可以移植

5.跨平台

3.面向对象程序设计

1.继承

2.多态

3.封装

4.C++语言的基本符号

1.字母

2.数字

3.特殊符号

5.C++词汇

1.关键字

1. 基本数据类型关键字

2. 流程控制关键字

3. 类相关关键字

4. 命名空间关键字

5. 异常处理关键字

6. 指针和引用关键字

7. 类型转换关键字

8. 布尔类型关键字

9. 内存分配和释放关键字

10. 其他关键字

2.标识符 

1. 组成规则

2. 命名规范

3. 保留标识符

4. 命名约定

3.字面常量

4.运算符        

5.标点符号    

1.6 C++程序的基本框架

1.结构化程序设计框架        

2.面向对象程序设计框架

1.7 C++程序的开发过程

1.需求分析

2.设计

3.编码

4.测试

5.调试

6. 优化

7. 部署和维护


前言

        记录下学习C++的过程。

1.C++语言的发展简史

  1. 1979年C++诞生于贝尔实验室。
  2. 1985年C++1.0版诞生。
  3. 1989年C++2.0版诞生。
  4. 1993年C++3.0版诞生。
  5. 1998年C++98(C++标准第一版)诞生。
  6. 2003年C++03(C++标准第二版)版诞生。
  7. 2011年C++11(C++标准第三版)版诞生。
  8. 2014年C++14(C++标准第四版)版诞生
  9. 2017年C++17(C++标准第五版)版诞生。
  10. C++20标准发布,带来了许多重要的新特性,包括概念(Concepts)、协程(Coroutines)、范围(Ranges)等,进一步提高了C++的表达能力和性能。

2.C++语言的特点

1.C++是一种面向对象的编程语言

       C++是一种面向对象的编程语言,支持类、对象、继承、多态等面向对象的概念,使得程序可以更加模块化、可扩展和易维护。

2.C++语言是源自实践

        Bjarne Stroustrup最初开发C++的动机之一就是解决他在C语言中遇到的一些实际编程问题。在贝尔实验室工作期间,他发现在开发复杂的系统时,C语言的某些特性和限制会导致编码效率低下,代码重复性高,难以维护等问题。

        因此,他设计了C++,在保留了C语言的部分特性的基础上,引入了一些新的概念和功能,如类、继承、多态等,以支持面向对象编程。这些新增的特性使得程序可以更加模块化、可扩展和易维护。此外,C++还引入了模板(Template)机制,以支持泛型编程,使得程序员可以编写通用的代码,提高了代码的重用性和灵活性。

3.C++语言兼容C语言

        C++最初是在C语言的基础上发展而来的,由Bjarne Stroustrup于20世纪80年代初在贝尔实验室开发。C++最初被称为"C with Classes",它在C语言的基础上引入了类(class)等面向对象编程的特性。

        C++是C语言的超集,这意味着任何有效的C程序都是有效的C++程序。这种兼容性使得C++可以很好地与现有的C代码进行整合和共存。

        虽然C++在语法和特性上扩展了C语言,但它仍然保留了C语言的许多特性和语法。因此,熟悉C语言的程序员可以很快地学习和掌握C++,而且可以在C++中重用他们的C代码。

        C++在C语言的基础上引入了许多新的特性和功能,包括面向对象编程、模板、异常处理、命名空间等,使得C++更加适用于复杂的软件开发项目。

4.可以移植

        由于C++语言的标准化和编译器的普及,C++程序通常具有很好的可移植性,可以在不同的平台上进行编译和运行,而无需进行大量的修改。

5.跨平台

        C++程序可以在多个平台上运行,包括Windows、Linux、macOS等。这得益于C++的标准化和编译器的广泛支持,使得开发者可以编写一次代码,然后在不同的平台上进行编译和运行。

3.面向对象程序设计

        我们知道面向对象的三大特征:继承、多态和封装。C++也支持面向对象。

1.继承

        继承是面向对象编程的重要概念之一,它允许一个类(称为子类或派生类)从另一个类(称为父类或基类)继承属性和行为。子类可以访问父类中的成员(数据成员和成员函数),并且可以在其中添加新的成员或修改已继承的成员。继承有助于实现代码的重用和组织,同时也支持多态。

2.多态

        多态是指同一个函数名在不同的类中有不同的实现。C++实现多态的主要方式是通过虚函数(virtual function)和动态绑定(dynamic binding)。当一个函数在父类中声明为虚函数,并在其派生类中重写时,可以在运行时根据对象的实际类型调用正确的函数实现,而不是根据指针或引用的静态类型。多态性使得代码更具灵活性和可扩展性。

3.封装

        封装是指将数据和操作数据的方法捆绑在一起,并对外部隐藏数据的具体实现细节。在C++中,封装通常通过将数据成员声明为私有的(private)并提供公有的(public)成员函数来实现。这样可以确保数据的安全性,并且使得代码更具可维护性和可扩展性。

4.C++语言的基本符号

        组成语言的最小元素是基本符号。C++语言的符号主要包括三种:

1.字母

        字母包括大小写字母,一共52个字符。

2.数字

        0~9是个数字。

3.特殊符号

        特殊符号包括+ - * /等30个符号        

5.C++词汇

1.关键字

        在C++中,关键字是具有特殊含义的保留字,用于表示语言的基本构造和控制结构。这些关键字在编程中具有特殊的用途,不能用作标识符或变量名。以下是C++中的一些关键字:

1. 基本数据类型关键字


   - int
   - double
   - char
   - bool
   - float
   - void

2. 流程控制关键字


   - if
   - else
   - switch
   - case
   - default
   - for
   - while
   - do
   - break
   - continue
   - return

3. 类相关关键字


   - class
   - struct
   - union
   - private
   - protected
   - public
   - virtual
   - override
   - final
   - friend
   - static

4. 命名空间关键字

       namespace关键字

5. 异常处理关键字

        异常处理,我们使用try、catch、throw关键字。

6. 指针和引用关键字

        我们使用&q取地址和*指针。

7. 类型转换关键字

        类型转换关键字主要有:dynamic_cast、static_cast 、const_cast、 reinterpret_cast

8. 布尔类型关键字

        布尔类型关键字有true和false。

9. 内存分配和释放关键字

        new申请内存空间,delete释放内存空间

10. 其他关键字

          constexpr、const、volatile、inline、explicit、 typename、using、sizeof、template

        这些关键字在C++中具有特殊的含义和用途,程序员需要熟悉它们以正确地使用和理解C++语言的语法和语义。

2.标识符 

        在C++中,标识符是用来命名变量、函数、类、对象以及其他用户定义的项目的名称。标识符必须遵循一定的规则,并且不能与关键字相同。以下是C++中标识符的一些基本规则:

1. 组成规则

        标识符可以由字母、数字和下划线组成。
   1.第一个字符必须是字母或下划线。
   2.C++是区分大小写的,因此大写字母和小写字母被视为不同的字符。
   3. 标识符不能包含空格和特殊字符(如@、#、$等)。

2. 命名规范

        标识符的命名最好具有描述性,能够清晰地表达其所代表的含义。
   1.通常采用驼峰命名法(CamelCase)或下划线命名法(snake_case)来命名标识符。
   2.驼峰命名法:首字母小写,后续单词首字母大写,如:myVariable、calculateArea。
   3.下划线命名法:单词之间用下划线分隔,全部小写,如:my_variable、calculate_area。

3. 保留标识符

        C++中有一些保留的标识符,即关键字,不能用作标识符,如if、else、for等。

4. 命名约定

        通常类名以大写字母开头,函数名和变量名以小写字母开头。
        对于私有成员变量,可以使用下划线作为前缀,如:_privateVariable。
        对于全局变量,可以使用"g_"作为前缀,如:`g_globalVariable`。

3.字面常量

        在C++中,字面常量是指直接出现在源代码中的常量值,它们是程序中固定的值,不会改变。C++支持多种类型的字面常量,包括整型、浮点型、字符型、字符串型和布尔型等。

4.运算符        

        在C++中,运算符用于执行各种操作,包括算术运算、逻辑运算、位运算、赋值运算、关系运算等。

5.标点符号    

        在C++中,标点符号用于表示语法结构、分隔符号和特殊符号等。以下是C++中常见的标点符号:

1. **分号(;):** 表示语句的结束。

2. **逗号(,):** 用于分隔多个表达式或声明。

3. **圆括号(()):** 用于括住函数参数列表、表达式的分组等。

4. **花括号({}):** 用于定义代码块的起始和结束,如函数体、循环体等。

5. **方括号([]):** 用于定义数组、访问数组元素、指定数组大小等。

6. **冒号(:):** 用于标记函数、类、命名空间的定义结束、条件语句的标签等。

7. **双冒号(::):** 作用域解析运算符,用于访问命名空间中的成员或类的静态成员。

8. **句点(.):** 用于访问对象的成员变量或成员函数。

9. **箭头符号(->):** 用于通过指针访问对象的成员变量或成员函数。

10. **引号(' 和 "):** 用于定义字符常量和字符串常量。

11. **反斜杠(\):** 转义字符,用于转义特殊字符,如换行符 `\n`、制表符 `\t` 等。

12. **注释符号:**
    - 单行注释:`//`
    - 多行注释:`/* */`

13. **预处理符号:**
    - `#`:用于预处理指令的起始。
    - `##`:用于在宏中拼接两个标识符。
    - `#include`、`#define`、`#ifdef`、`#endif` 等。

14. **空格符号和换行符:** 用于分隔单词、语句和行。

1.6 C++程序的基本框架

1.结构化程序设计框架        

        在C++中,结构化程序设计框架通常由主函数(main function)和一系列函数组成,这些函数按照功能模块化地实现程序的各个部分。以下是一个典型的C++结构化程序设计框架的示例:

#include <iostream>

// 函数声明
void greet();
void calculate(int x, int y);
void displayResult(int result);

int main() {
    // 调用函数
    greet();

    // 获取输入
    int a, b;
    std::cout << "Enter two numbers: ";
    std::cin >> a >> b;

    // 调用函数
    calculate(a, b);

    return 0;
}

// 函数定义
void greet() {
    std::cout << "Welcome to the program!" << std::endl;
}

void calculate(int x, int y) {
    // 执行计算
    int result = x + y;

    // 调用函数
    displayResult(result);
}

void displayResult(int result) {
    // 显示结果
    std::cout << "The result is: " << result << std::endl;
}

        在上述示例中,程序包含一个主函数 `main()` 和三个自定义函数 greet()、calculate() 和 displayResult()。这些函数按照功能模块化地实现了程序的不同部分:

  1. main() 函数负责程序的入口、流程控制和用户交互。
  2. greet()函数用于向用户显示欢迎信息。
  3. calculate() 函数用于执行计算,并调用 `displayResult()` 函数来显示结果。
  4. displayResult()函数用于显示计算结果。

        这种结构化的程序设计框架使得程序更易于理解、维护和扩展。通过将功能拆分为独立的函数,可以提高代码的可读性和复用性,并且可以更轻松地对程序进行测试和调试。

2.面向对象程序设计框架

        在C++中,面向对象程序设计(Object-Oriented Programming, OOP)框架通常由类(Class)和对象(Object)组成,其中类定义了对象的属性和行为,而对象则是类的具体实例。        

        以下是一个简单的C++面向对象程序设计框架的示例:

#include <iostream>

// 类声明
class Rectangle {
private:
    int width;
    int height;

public:
    // 构造函数
    Rectangle(int w, int h) : width(w), height(h) {}

    // 成员函数
    int area() {
        return width * height;
    }

    void display() {
        std::cout << "Width: " << width << ", Height: " << height << std::endl;
    }
};

int main() {
    // 创建对象
    Rectangle rect1(3, 4);
    Rectangle rect2(5, 6);

    // 调用成员函数
    std::cout << "Rectangle 1 Area: " << rect1.area() << std::endl;
    std::cout << "Rectangle 2 Area: " << rect2.area() << std::endl;

    rect1.display();
    rect2.display();

    return 0;
}

        在上述示例中,我们定义了一个名为 Rectangle 的类,它具有私有成员变量 width和 height,以及公有成员函数 area()和 display()。其中:

- 构造函数 Rectangle(int w, int h)用于初始化对象的属性。
- 成员函数 area()用于计算矩形的面积。
- 成员函数 display() 用于显示矩形的宽度和高度。

        在 main() 函数中,我们创建了两个 Rectangle 类的对象 rect1和 rect2,并分别调用了它们的成员函数来计算面积并显示属性。

        这种面向对象的程序设计框架使得代码更加模块化、可复用和易于维护。通过将相关的属性和行为封装在类中,可以提高代码的可读性和可维护性,并且可以更轻松地扩展和修改代码。

1.7 C++程序的开发过程

        C++程序的开发过程通常包括以下几个主要阶段:

1.需求分析

         在这个阶段,确定程序的功能需求和性能要求。

2.设计

         根据需求分析阶段的结果,设计程序的整体结构和模块划分。这通常包括确定使用的数据结构、算法、类和函数等,以及它们之间的关系和交互方式。

3.编码

         在设计阶段的基础上,开始编写程序代码。根据设计文档中的规范和要求,实现每个模块的功能,并确保代码的可读性、可维护性和性能。

4.测试

         编码完成后,对程序进行测试以验证其功能的正确性和性能的稳定性。这包括单元测试、集成测试和系统测试等不同层次的测试,以确保程序的各个部分正常工作并且整体符合预期。

5.调试

        在测试阶段可能会发现程序中的错误和问题,需要对这些问题进行调试和修复。通过使用调试工具和技术,定位和解决程序中的错误,并确保程序的正确性和稳定性。

6. 优化

         在程序通过测试并且功能正常工作后,可以对其进行优化以提高性能和效率。这包括对算法、数据结构和代码结构等方面进行优化,以减少资源消耗和提高响应速度。

7. 部署和维护

        当程序经过测试、调试和优化后,可以将其部署到目标环境中,并开始使用。在程序运行过程中可能会出现一些问题或需求变更,需要及时对程序进行维护和更新,以确保其持续稳定运行。

  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫柱子哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值