手记

C++入门实战

为何学习C++?

C++ 是一种强大的通用编程语言,它融合了面向过程和面向对象编程的特性,且兼容C语言,因此在软件开发、游戏开发、系统编程、嵌入式系统等领域有着广泛的应用。学习 C++ 不仅能够帮助开发者构建高效、性能卓越的程序,还能为理解更高级概念(如面向对象编程、模板和多态)打下坚实的基础。

C++在现代编程中的地位

C++ 的地位之所以独特,原因在于它的高性能、灵活性和广泛的支持。它提供了对底层硬件的直接控制,这对于需要高性能计算的场景(如科学计算、游戏开发和金融建模)至关重要。同时,C++ 语言的强大库(如STL)和对复杂数据结构的高效支持,使得它在构建大型、复杂的软件系统时成为首选语言。

II. C++基础语法

变量与数据类型

C++ 支持多种数据类型,包括整型、浮点型和字符型。

#include <iostream>

int main() {
    int a = 10;       // 整型变量
    float b = 3.14f;  // 浮点型变量,'f'表示单精度浮点数
    char c = 'X';     // 字符型变量
    std::cout << "Int: " << a << ", Float: " << b << ", Char: " << c << std::endl;
    return 0;
}

控制结构

控制结构是程序流程控制的基础,包括条件语句(ifelse)和循环语句(forwhiledo-while)。

#include <iostream>

int main() {
    int x = 5;
    if (x > 0) {
        std::cout << "x is positive." << std::endl;
    } else {
        std::cout << "x is not positive." << std::endl;
    }
    
    int y = 10;
    int z = 0;
    while (z < 10) {
        std::cout << "z: " << z << std::endl;
        z++;
    }
    
    int k = 20;
    do {
        std::cout << "k: " << k << std::endl;
        k--;
    } while (k > 0);

    return 0;
}

运算符与表达式

C++ 中的运算符包括算术运算符、比较运算符和逻辑运算符,以及操作符优先级与结合性规则。

#include <iostream>

int main() {
    int a = 10, b = 5;
    int sum = a + b;
    int diff = a - b;
    int prod = a * b;
    int quot = a / b;
    int rem = a % b;
    bool isEqual = a == b;
    bool isNotEqual = a != b;
    bool isLessThan = a < b;
    bool isGreaterThan = a > b;
    bool isLessOrEqual = a <= b;
    bool isGreaterOrEqual = a >= b;
    bool isTrue = true;
    bool isFalse = false;
    bool andOp = isTrue && isFalse;
    bool orOp = isTrue || isFalse;

    std::cout << "Sum: " << sum << std::endl;
    std::cout << "Difference: " << diff << std::endl;
    std::cout << "Product: " << prod << std::endl;
    std::cout << "Quotient: " << quot << std::endl;
    std::cout << "Remainder: " << rem << std::endl;
    std::cout << "IsEqual: " << isEqual << std::endl;
    std::cout << "IsNotEqual: " << isNotEqual << std::endl;
    std::cout << "IsLessThan: " << isLessThan << std::endl;
    std::cout << "IsGreaterThan: " << isGreaterThan << std::endl;
    std::cout << "IsLessOrEqual: " << isLessOrEqual << std::endl;
    std::cout << "IsGreaterOrEqual: " << isGreaterOrEqual << std::endl;
    std::cout << "AndOp: " << andOp << std::endl;
    std::cout << "OrOp: " << orOp << std::endl;

    return 0;
}

函数

函数是组织代码和实现可重用功能的关键。C++ 函数包括声明、定义和参数传递。

#include <iostream>

// 函数声明
int add(int x, int y);

int main() {
    int result = add(4, 5);
    std::cout << "Result of add: " << result << std::endl;
    return 0;
}

// 函数定义
int add(int x, int y) {
    return x + y;
}

构造函数与析构函数

构造函数在对象创建时调用,负责初始化对象;析构函数在对象销毁时调用,负责清理资源。

#include <iostream>

class MyClass {
public:
    MyClass() {
        std::cout << "MyClass object created." << std::endl;
    }
    ~MyClass() {
        std::cout << "MyClass object destroyed." << std::endl;
    }
};

int main() {
    MyClass obj;
    return 0;
}

III. 类与对象

类的定义与成员

类定义了对象的行为和属性,成员包括数据成员和成员函数。

#include <iostream>

class MyCircle {
public:
    double radius; // 数据成员

    MyCircle(double r) : radius(r) {} // 构造函数

    double getArea() { // 成员函数
        return 3.14 * radius * radius;
    }
};

int main() {
    MyCircle circle(5);
    std::cout << "Area of circle: " << circle.getArea() << std::endl;
    return 0;
}

继承与多态

继承允许创建具有共享特性的类,多态允许对象以多种方式响应相同消息。

#include <iostream>

class Shape {
public:
    virtual void printArea() { std::cout << "Shape area." << std::endl; }
};

class Circle : public Shape {
public:
    double radius;

    Circle(double r) : radius(r) {}

    void printArea() override {
        std::cout << "Circle area: " << 3.14 * radius * radius << std::endl;
    }
};

int main() {
    Shape *shape = new Circle(5);
    shape->printArea();
    delete shape;
    return 0;
}

IV. 输入输出

输入输出是程序与用户或外部系统交互的关键部分。

#include <iostream>

int main() {
    int x;
    std::cout << "Enter a number: ";
    std::cin >> x;
    std::cout << "You entered: " << x << std::endl;
    return 0;
}

V. 高级特性介绍

指针与引用

指针允许你直接操作内存地址,而引用则提供了一种安全的方式来绑定变量名和内存地址。

#include <iostream>

int main() {
    int x = 10;
    int *ptr = &x; // 指针声明和初始化
    std::cout << "Value of x: " << *ptr << std::endl;
    *ptr = 20; // 修改通过指针引用的值
    std::cout << "Value of x after modification: " << x << std::endl;
    
    int &ref = x; // 引用声明
    ref = 30; // 直接通过引用修改值
    std::cout << "Value of x after using reference: " << x << std::endl;
    return 0;
}

动态内存分配

使用 newdelete 操作符可以动态分配和释放内存。

#include <iostream>

int main() {
    int *dynamicPtr = new int(10); // 动态分配内存
    std::cout << "Value of dynamicPtr: " << *dynamicPtr << std::endl;
    delete dynamicPtr; // 释放动态分配的内存
    dynamicPtr = nullptr; // 防止野指针
    return 0;
}

集合与模板

C++ 提供了容器(如 vectorlistmap)和模板来创建灵活且高效的数据结构。

#include <iostream>
#include <vector>

template <typename T>
void printSequence(const std::vector<T> &seq) {
    for (const auto &elem : seq) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;
}

int main() {
    std::vector<int> intVec = {1, 2, 3};
    printSequence(intVec);

    std::vector<std::string> stringVec = {"apple", "banana", "cherry"};
    printSequence(stringVec);
    
    return 0;
}

VI. 总结与实践

学习要点回顾

  • 掌握变量声明和数据类型
  • 熟悉控制结构和运算符使用
  • 理解函数、构造函数和析构函数的作用
  • 掌握类与对象的基本概念
  • 熟练使用输入输出操作
  • 了解指针、引用、动态内存分配和模板使用

练习与实践建议

  • 实现一个简单的计算器程序,包括加、减、乘、除功能
  • 完成一个图形界面的文件管理系统,支持文件或文件夹的创建、删除和查找功能
  • 设计并实现一个简单的类库,如数学工具类,提供基本数学运算功能

推荐资源与进一步学习路径

  • 在线课程:慕课网(https://www.imooc.com/)提供了丰富的 C++ 课程资源,适合不同水平的学习者。
  • 书籍:《C++ Primer》和《Effective C++》是深入学习 C++ 的经典书籍。
  • 社区与论坛:参与 C++ 相关的社区和论坛(如 Stack Overflow)可以获取实时的编程支持和学习资源。
  • 项目实践:在 GitHub 上寻找 C++ 开源项目进行实践,通过实际项目经验提高编程技能。
0人推荐
随时随地看视频
慕课网APP