C++基础语法
一、命名空间(namespace)
C++ 引入了 namespace 解决 C 语言中名字冲突的问题。它可以将全局作用域进行本地化分割。
示例 1:命名空间的定义与使用
#include <iostream>
namespace Calc {
int add(int a, int b) { return a + b; }
int sub(int a, int b) { return a - b; }
}
int main() {
int sum = Calc::add(10, 20);
int diff = Calc::sub(20, 5);
std::cout << sum << " " << diff << "\n";
return 0;
}
二、C++ 输入输出
C++ 使用 cout 和 cin 进行插流式输入输出,不再需要手动控制格式。
示例 2:C++ 流输入输出
#include <iostream>
#include <string>
int main() {
std::string name;
int age;
std::cout << "Enter name and age: ";
std::cin >> name >> age;
std::cout << name << ", " << age << " years old\n";
return 0;
}
三、缺省参数
缺省参数允许为函数参数指定默认值,调用时未传入则使用默认值。这一特性在构造函数中将发挥重要作用。
示例 3:全缺省与半缺省参数
#include <iostream>
void greet(const char* name = "Guest") {
std::cout << "Hello, " << name << "!\n";
}
void order(int main_dish, int drink = 1) {
std::cout << "Main: " << main_dish << ", Drink: " << drink << "\n";
}
int main() {
greet();
greet("Alice");
order(5);
order(3, 2);
return 0;
}
四、函数重载
C++ 允许同一作用域中声明多个名称相同但形参不同的函数。原理是编译器通过名字修饰机制区分。
示例 4:函数重载
#include <iostream>
int max(int a, int b) { return a > b ? a : b; }
double max(double a, double b) { return a > b ? a : b; }
int main() {
std::cout << max(3, 7) << "\n";
std::cout << max(3.14, 2.71) << "\n";
return 0;
}
五、引用
引用是已存在变量的别名,在传参和传回归值时可显著提升性能。它在拷贝构造函数和赋值运算符重载中有直接应用。
示例 5:引用作为参数和返回值
#include <iostream>
void swap(int& a, int& b) {
int tmp = a;
a = b;
b = tmp;
}
int global = 0;
int& counter() { return global; }
int main() {
int x = 10, y = 20;
swap(x, y);
std::cout << x << "," << y << "\n";
counter() = 42;
std::cout << counter() << "\n";
return 0;
}
其他重要特性
- inline 内联函数:以空间换时间,省去函数调用开销。类中定义的成员函数默认被视为 inline
- auto 关键字(C++11):编译器自动推导变量类型
- 基于范围的 for 循环(C++11):简洁遍历数组或容器
- nullptr(C++11):专门表示指针空值,解决 NULL 的二意性问题
示例 6:inline、auto、范围 for、nullptr 综合应用
#include <iostream>
#include <vector>
inline int square(int x) { return x * x; }
int main() {
std::vector<int> nums = {1,2,3,4,5};
for (auto& n : nums) n = square(n);
for (auto n : nums) std::cout << n << " ";
std::cout << "\n";
int* p = nullptr;
if (p == nullptr) std::cout << "null\n";
return 0;
}
总结
本篇介绍了 C++ 入门的核心特性。其中引用是后续类与对象学习的重中之重。下一篇《类与对象(上篇)》将正式进入面向对象编程的世界。
更多推荐

所有评论(0)