Skip to content

C++ 入门

本章将介绍C++语言的历史、特点、开发环境搭建,以及编写第一个C++程序。

C++ 简介

C++的历史

cpp
/*
 * C++发展历史:
 * 1979年 - Bjarne Stroustrup在贝尔实验室开始开发"C with Classes"
 * 1983年 - 正式命名为C++
 * 1985年 - 发布第一版《The C++ Programming Language》
 * 1998年 - ISO C++标准(C++98)发布
 * 2003年 - C++03标准发布(主要是bug修复)
 * 2011年 - C++11标准发布(重大更新)
 * 2014年 - C++14标准发布
 * 2017年 - C++17标准发布
 * 2020年 - C++20标准发布
 * 2023年 - C++23标准发布
 */

C++的特点

cpp
/*
 * C++的主要特点:
 * 
 * 1. 多范式编程
 *    - 面向过程:类似C语言的函数式编程
 *    - 面向对象:类、继承、多态
 *    - 泛型编程:模板
 * 
 * 2. 高性能
 *    - 直接操作内存
 *    - 零开销抽象
 *    - 编译时优化
 * 
 * 3. 兼容C语言
 *    - 大部分C代码可以在C++中编译
 *    - 可以调用C库函数
 * 
 * 4. 丰富的标准库
 *    - STL容器
 *    - 算法库
 *    - 智能指针
 */

开发环境搭建

Windows环境

cpp
/*
 * Windows开发环境搭建:
 * 
 * 方案一:Visual Studio(推荐新手)
 * 1. 下载Visual Studio Community(免费版)
 * 2. 安装时选择"使用C++的桌面开发"
 * 3. 创建新项目 -> 空项目 -> 添加源文件
 * 
 * 方案二:MinGW-w64 + VS Code
 * 1. 下载MinGW-w64编译器
 * 2. 配置环境变量PATH
 * 3. 安装VS Code和C++扩展
 * 4. 配置tasks.json和launch.json
 * 
 * 验证安装:
 * 打开命令行,输入:g++ --version
 */

Linux环境

cpp
/*
 * Linux开发环境搭建:
 * 
 * Ubuntu/Debian:
 * sudo apt update
 * sudo apt install build-essential gdb
 * 
 * CentOS/RHEL:
 * sudo yum groupinstall "Development Tools"
 * 
 * 验证安装:
 * g++ --version
 * gdb --version
 */

macOS环境

cpp
/*
 * macOS开发环境搭建:
 * 
 * 1. 安装Xcode Command Line Tools:
 *    xcode-select --install
 * 
 * 2. 或安装完整Xcode(从App Store)
 * 
 * 3. 安装Homebrew包管理器(可选):
 *    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
 * 
 * 4. 使用Homebrew安装GCC:
 *    brew install gcc
 * 
 * 验证安装:
 * clang++ --version
 */

第一个C++程序

Hello World

cpp
// 这是单行注释,用于解释代码

/*
 * 这是多行注释
 * 可以跨越多行
 */

// #include是预处理指令,用于包含头文件
// <iostream>是C++标准输入输出库
#include <iostream>

// using namespace std; 表示使用标准命名空间
// 这样可以直接使用cout、endl等,而不需要写std::cout
using namespace std;

// main函数是程序的入口点
// int表示返回类型为整数
// 每个C++程序必须有且只有一个main函数
int main() {
    // cout是标准输出流对象(Character Output)
    // <<是流插入运算符
    // endl是换行符,并刷新输出缓冲区
    cout << "Hello, World!" << endl;
    
    // 返回0表示程序正常结束
    // 非零值表示程序异常结束
    return 0;
}

不使用using namespace

cpp
#include <iostream>

// 不使用using namespace std,需要加std::前缀
// 这种方式更规范,避免命名冲突

int main() {
    // std::cout 表示标准命名空间中的cout
    std::cout << "Hello, C++!" << std::endl;
    
    return 0;
}

带用户交互的程序

cpp
#include <iostream>
#include <string>  // 包含string头文件以使用字符串类型

using namespace std;

int main() {
    // 定义一个字符串变量存储用户名
    string name;
    
    // cout输出提示信息
    cout << "请输入你的名字: ";
    
    // cin从标准输入读取数据
    // >>是流提取运算符
    cin >> name;
    
    // 输出问候信息
    cout << "你好, " << name << "!" << endl;
    cout << "欢迎学习C++编程!" << endl;
    
    return 0;
}

编译和运行

使用g++编译

cpp
/*
 * 编译C++程序的步骤:
 * 
 * 1. 预处理(Preprocessing)
 *    - 处理#include指令
 *    - 展开宏定义
 *    - 条件编译
 * 
 * 2. 编译(Compilation)
 *    - 语法分析
 *    - 生成汇编代码
 * 
 * 3. 汇编(Assembly)
 *    - 生成目标文件(.o或.obj)
 * 
 * 4. 链接(Linking)
 *    - 链接库文件
 *    - 生成可执行文件
 */

/*
 * 常用编译命令:
 * 
 * 编译单个文件:
 * g++ hello.cpp -o hello
 * 
 * 运行程序:
 * ./hello          (Linux/macOS)
 * hello.exe        (Windows)
 * 
 * 启用C++11标准:
 * g++ -std=c++11 hello.cpp -o hello
 * 
 * 启用C++17标准:
 * g++ -std=c++17 hello.cpp -o hello
 * 
 * 启用所有警告:
 * g++ -Wall hello.cpp -o hello
 * 
 * 包含调试信息:
 * g++ -g hello.cpp -o hello
 * 
 * 生成优化代码:
 * g++ -O2 hello.cpp -o hello
 */

编译多个文件

cpp
/*
 * 多文件编译示例:
 * 
 * 假设有以下文件:
 * - main.cpp(主程序)
 * - utils.cpp(工具函数实现)
 * - utils.h(工具函数声明)
 * 
 * 方法一:一起编译
 * g++ main.cpp utils.cpp -o myprogram
 * 
 * 方法二:分别编译后链接
 * g++ -c main.cpp -o main.o
 * g++ -c utils.cpp -o utils.o
 * g++ main.o utils.o -o myprogram
 * 
 * 方法三:使用Makefile或CMake
 */

C++与C的区别

cpp
#include <iostream>
#include <cstdio>  // C风格输入输出头文件

using namespace std;

int main() {
    // ============ 输出方式对比 ============
    
    // C风格输出
    printf("C风格输出: Hello, World!\n");
    
    // C++风格输出
    cout << "C++风格输出: Hello, World!" << endl;
    
    
    // ============ 变量声明对比 ============
    
    // C语言:变量必须声明在代码块开头
    // C++:变量可以在任何位置声明
    
    // C++风格:在使用处声明
    for (int i = 0; i < 3; i++) {
        cout << "i = " << i << endl;
    }
    
    
    // ============ 布尔类型对比 ============
    
    // C++有内置bool类型
    bool isTrue = true;   // true是C++关键字
    bool isFalse = false; // false是C++关键字
    
    cout << "isTrue = " << isTrue << endl;   // 输出1
    cout << "isFalse = " << isFalse << endl; // 输出0
    
    // 使用boolalpha输出true/false字面值
    cout << boolalpha;
    cout << "isTrue = " << isTrue << endl;   // 输出true
    cout << "isFalse = " << isFalse << endl; // 输出false
    
    
    // ============ 引用 vs 指针 ============
    
    int num = 10;
    
    // 指针(C和C++都支持)
    int* ptr = &num;
    cout << "指针访问: " << *ptr << endl;
    
    // 引用(C++特有)
    int& ref = num;  // ref是num的引用(别名)
    cout << "引用访问: " << ref << endl;
    
    // 通过引用修改原变量
    ref = 20;
    cout << "修改后num = " << num << endl;
    
    
    return 0;
}

代码风格建议

cpp
#include <iostream>

using namespace std;

/*
 * C++代码风格建议:
 * 
 * 1. 命名规范
 *    - 类名:大驼峰(MyClass)
 *    - 函数名:小驼峰或下划线(myFunction 或 my_function)
 *    - 变量名:小驼峰或下划线(myVariable 或 my_variable)
 *    - 常量名:全大写下划线(MAX_SIZE)
 *    - 宏定义:全大写下划线(#define PI 3.14159)
 * 
 * 2. 缩进和空格
 *    - 使用4个空格或1个Tab缩进
 *    - 运算符两边加空格
 *    - 逗号后面加空格
 * 
 * 3. 注释
 *    - 单行注释用 //
 *    - 多行注释用 /* */
 *    - 文档注释用 /** */
/*
 * 
 * 4. 大括号风格
 *    - K&R风格:左大括号不换行
 *    - Allman风格:左大括号换行
 */

// 示例:良好的代码风格

// 常量定义
const int MAX_STUDENTS = 100;
const double PI = 3.14159;

// 类定义(大驼峰命名)
class StudentInfo {
public:
    // 成员函数(小驼峰命名)
    void setStudentName(string name) {
        studentName = name;  // 左大括号不换行
    }
    
    string getStudentName() {
        return studentName;
    }
    
private:
    string studentName;  // 成员变量(下划线后缀或小驼峰)
};

int main() {
    // 变量声明时初始化
    int studentCount = 0;
    double averageScore = 0.0;
    
    // 使用有意义的变量名
    bool isPassed = true;
    
    // 运算符两边加空格
    int sum = 10 + 20;
    
    // 适当的空行分隔逻辑块
    cout << "学生人数: " << studentCount << endl;
    cout << "平均分: " << averageScore << endl;
    
    return 0;
}

本章小结

本章学习了:

  • C++历史:从1979年发展至今,经历了多次标准更新
  • 开发环境:Windows/Linux/macOS平台的环境搭建
  • 第一个程序:Hello World程序的结构和编译运行
  • C++与C的区别:bool类型、引用、变量声明位置等
  • 代码风格:命名规范、缩进、注释等最佳实践

下一章,我们将学习基础语法,了解C++的变量、常量和输入输出。