C++ 是一种通用的、面向对象的编程语言,由 Bjarne Stroustrup 于1983年在贝尔实验室开发。它结合了C语言的兼容性与面向对象编程的灵活性,旨在提供高效、灵活的代码结构。随着版本的更新,C++添加了诸如智能指针、lambda函数、类模板等现代特性,使得语言更加强大且易于使用。
C++与C语言的关系
C++是C语言的扩展,继承了C语言的语法和大部分库函数。它引入了面向对象编程概念,如类、构造函数、析构函数、继承、封装和多态等。此外,C++支持泛型编程,允许创建可处理多种数据类型的模板代码。
C++的特点与应用领域
C++以其高效和灵活性被广泛应用于操作系统、游戏开发、图形用户界面、科学计算、嵌入式系统和服务器端编程等领域。它的高效性、低级操作控制以及强大的功能使其成为系统级程序设计的理想选择。
C++基本概念变量与数据类型
C++中的变量是用于存储数据的容器,数据类型定义变量存储的值类型。常见的数据类型包括整型、浮点型、字符型等,此外还支持数组、结构体、类等复杂类型。
int age; // 定义整型变量 age
float salary = 5000.0f; // 定义浮点型变量 salary
char grade = 'A'; // 定义字符型变量 grade
int main() {
int x = 10;
float y = 3.14f;
cout << "x: " << x << ", y: " << y << endl;
return 0;
}
控制结构
控制结构用于控制程序流程,包括条件语句和循环语句。
条件语句
int main() {
int num = 5;
if (num > 0) {
cout << "Number is positive." << endl;
} else if (num < 0) {
cout << "Number is negative." << endl;
} else {
cout << "Number is zero." << endl;
}
return 0;
}
循环语句
int main() {
int i = 0;
while (i < 5) {
cout << "Iteration: " << i << endl;
i++; // 自增操作
}
return 0;
}
函数
函数是一段执行特定任务的代码块,通过函数名、参数列表和函数体定义。
int add(int a, int b) {
return a + b; // 定义加法函数
}
int main() {
int result = add(3, 4);
cout << "Result: " << result << endl;
return 0;
}
指针与引用的区别与使用
指针和引用是C++中用于操作内存地址的工具:
int num = 10;
int *ptr = # // 指针 ptr 指向 num 的地址
int &ref = num; // 引用 ref 等同于 num,不能直接修改 num 的地址
int main() {
cout << "num: " << num << ", *ptr: " << *ptr << endl;
cout << "ref: " << ref << endl;
return 0;
}
面向对象编程
面向对象编程是C++的核心特性,通过类封装数据和操作。
类的定义与成员变量
class Car {
public:
int speed; // 公有成员变量
void setSpeed(int s) {
speed = s; // 设置速度的方法
}
};
int main() {
Car myCar;
myCar.setSpeed(60);
cout << "Speed: " << myCar.speed << endl;
return 0;
}
构造函数与析构函数
构造函数在对象创建时初始化成员,而析构函数在对象销毁时执行清理。
class Car {
public:
int speed;
Car() { // 构造函数
speed = 0;
}
~Car() { // 析构函数
cout << "Car deleted." << endl;
}
};
int main() {
Car myCar;
return 0;
}
错误处理与调试
编译错误与运行时错误
C++程序可能在编译或运行时出现错误,通过异常处理和调试工具可以诊断和修复。
使用 try-catch 块进行异常处理
#include <iostream>
#include <stdexcept>
int divide(int a, int b) {
if (b == 0) {
throw std::runtime_error("Division by zero!"); // 抛出异常
}
return a / b;
}
int main() {
try {
int result = divide(10, 0);
std::cout << "Result: " << result << std::endl;
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
日志与调试工具的使用
日志记录和调试工具如GDB和Visual Studio调试器帮助定位和解决程序错误。
案例分析与项目实例项目实例和案例分析是理解C++概念的关键。例如,为增强代码的可读性和复用性,可以实现一个简单的C++程序,用于管理图书馆系统。
图书管理示例
图书类定义
class Book {
private:
std::string title;
std::string author;
public:
Book(const std::string& t, const std::string& a) : title(t), author(a) {}
void setTitle(const std::string& t) {
title = t;
}
void setAuthor(const std::string& a) {
author = a;
}
void displayInfo() {
std::cout << "Title: " << title << ", Author: " << author << std::endl;
}
};
图书管理系统代码
#include <iostream>
#include "Book.h"
int main() {
Book book1("C++ Primer", "Stanley B. Lippman");
book1.displayInfo();
book1.setTitle("Effective C++");
book1.displayInfo();
return 0;
}
通过这样的实例,可以更深入地理解C++类和成员方法的使用,以及面向对象编程的实践应用。