基本语法

翻译整理自 cppreference - C++ 语法。

1. 注释

// 行注释

/*
   块注释
*/

/* 块注释可以 /* 嵌套 */ 仍有效 */  // C++ 起块注释不嵌套(这是 C99 风格)

C++ 块注释不能嵌套(与 C 相同)。

2. main 函数

int main() { ... }
int main(int argc, char* argv[]) { ... }   // 命令行参数
int main(int argc, char** argv) { ... }

main 返回 int,0 表示成功。不要写 void main(非标准)。

3. 输入输出

C++ 推荐 <iostream>:

#include <iostream>

int main() {
    int age;
    std::cout << "请输入年龄: ";
    std::cin >> age;
    std::cout << "你 " << age << " 岁\n";
}

endl 与 '\n':

std::cout << "a" << std::endl;   // 刷新缓冲
std::cout << "a\n";              // 不刷新(更快)

混合使用 printf:

#include <cstdio>
std::printf("%d\n", 42);

4. 命名空间 namespace

避免命名冲突:

namespace mylib {
    int add(int a, int b) { return a + b; }

    namespace inner {
        void hello() { std::cout << "hi"; }
    }
}

int main() {
    std::cout << mylib::add(1, 2);
    using namespace mylib;        // 引入整个命名空间
    std::cout << add(1, 2);

    using mylib::inner::hello;
    hello();
}

在头文件中避免 using namespace std;,会污染所有包含它的文件。

5. 变量声明

int x = 10;
int y(20);
int z{30};            // 列表初始化(C++11),检查窄化
auto a = 1;           // 推断 int
auto b = 1.0;         // double
auto c = "x";         // const char*
auto d = std::string("x");

6. const 与 constexpr

const int Max = 100;             // 运行时常量
constexpr int N = 5;             // 编译期常量
constexpr int square(int x) {    // 编译期函数
    return x * x;
}
int arr[square(5)];               // OK

7. 引用 reference

引用是已有变量的别名,必须初始化且不能换绑:

int x = 1;
int& r = x;
r = 10;
std::cout << x;        // 10

const 引用

const std::string& s = getString();   // 可绑定临时对象

右值引用(C++11)

std::string s = "hello";
std::string&& r = std::move(s);        // 移动语义

8. 类型推断 auto / decltype

int x = 0;
decltype(x) y = 1;      // y 类型为 int

auto add = [](int a, int b) { return a + b; };   // lambda

9. 类型转换

C++ 提供四种显式转换:

const_cast<int&>(const_x);               // 去常量
static_cast<double>(i);                  // 静态转换(如数值)
dynamic_cast<Derived*>(base_ptr);        // 多态向下转换,需 RTTI
reinterpret_cast<char*>(ptr);            // 位级重解释

避免 C 风格 (int)x,使用 static_cast 更显式更安全。

小结

C++ 在 C 基础上增加了引用、命名空间、auto、const、模板等,让代码更安全更现代。下一章学习数据类型。