C++ 是一种功能强大且灵活的编程语言,用于系统编程、应用程序开发、游戏开发等多个领域。下面我将详细讲解 C++ 的基础知识,涵盖以下几个方面:
1. 基本语法
C++ 程序的基本结构如下:
#include <iostream> // 包含输入输出流库 int main() { std::cout << "Hello, World!" << std::endl; // 输出 Hello, World! return 0; }
-
#include <iostream>
:包含标准输入输出库。 -
int main()
:主函数,是程序的入口点。 -
std::cout
:标准输出流,用于输出文本。 -
std::endl
:表示换行。
2. 变量和数据类型
C++ 支持多种数据类型,包括基本数据类型和用户自定义数据类型。
基本数据类型:
-
整数类型:
int
,short
,long
,long long
-
浮点类型:
float
,double
-
字符类型:
char
-
布尔类型:
bool
变量声明:
int a = 10; float b = 5.5; char c = 'A'; bool d = true;
3. 运算符
C++ 提供了丰富的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符等。
算术运算符:
-
+
(加) -
-
(减) -
*
(乘) -
/
(除) -
%
(取余)
关系运算符:
-
==
(等于) -
!=
(不等于) -
<
(小于) -
>
(大于) -
<=
(小于等于) -
>=
(大于等于)
逻辑运算符:
-
&&
(逻辑与) -
||
(逻辑或) -
!
(逻辑非)
4. 控制流
条件语句:
if (condition) { // 执行代码 } else if (another_condition) { // 执行代码 } else { // 执行代码 }
循环语句:
-
for
循环:
for (int i = 0; i < 10; ++i) { // 执行代码 }
-
while
循环:
int i = 0; while (i < 10) { // 执行代码 ++i; }
-
do-while
循环:
int i = 0; do { // 执行代码 ++i; } while (i < 10);
5. 函数
函数用于封装代码,使代码更模块化和易于维护。
函数声明和定义:
int add(int a, int b) { return a + b; }
调用函数:
int result = add(5, 3);
6. 数组和字符串
数组:
int arr[5] = {1, 2, 3, 4, 5};
字符串:
-
C 风格字符串:
char str[] = "Hello";
-
C++ 风格字符串(使用
std::string
):
#include <string> std::string str = "Hello";
7. 指针和引用
指针:
int a = 10; int* p = &a; // p 是指向 a 的指针
引用:
int a = 10; int& ref = a; // ref 是 a 的引用
8. 面向对象编程
C++ 支持面向对象编程(OOP),主要概念包括类、对象、继承、多态等。
类和对象:
class MyClass { public: int myVar; void myMethod() { std::cout << "Hello, World!" << std::endl; } }; int main() { MyClass obj; obj.myVar = 5; obj.myMethod(); return 0; }
继承:
class Base { public: void display() { std::cout << "Base class display" << std::endl; } }; class Derived : public Base { public: void display() { std::cout << "Derived class display" << std::endl; } };
多态:
class Base { public: virtual void display() { std::cout << "Base class display" << std::endl; } }; class Derived : public Base { public: void display() override { std::cout << "Derived class display" << std::endl; } }; int main() { Base* basePtr; Derived derivedObj; basePtr = &derivedObj; basePtr->display(); // 输出:Derived class display return 0; }