一、C++关键字概述
C++中总共有63个关键字,这些关键字在C++语言的语法中扮演着重要的角色。它们用于定义各种变量和函数类型,控制程序的流程,以及实现面向对象的特性。一些常见的C++关键字包括int、float、if、for等。
需要注意的是,虽然C++是C语言(红色圈圈内为C语言的关键字)的扩展,但并非所有的C++关键字都来自于C语言。例如,false和true是C++中的布尔类型关键字,但在C语言中并不存在。
二、C++命名空间的作用与定义
命名空间是C++中的一种机制,用于避免命名冲突和名称污染。当多个库或模块中存在相同的名称时,使用命名空间可以区分开它们。命名空间通过将一组相关的声明和定义包装在一个独立的作用域中来实现。这样,不同的命名空间中可以有相同的名称,但它们不会冲突。
定义命名空间的示例:
namespace MyNamespace {
int value = 10;
void printValue() {
std::cout << "Value in MyNamespace: " << value << std::endl;
}
}
使用命名空间的三种方法:
- 使用作用域限定符访问命名空间中的成员:通过命名空间名称和作用域限定符
::
来访问命名空间中的成员。
#include <iostream>
using namespace std;
int main() {
MyNamespace::printValue(); // 使用作用域限定符访问printValue函数
cout << "Value from MyNamespace: " << MyNamespace::value << endl; // 访问value变量
return 0;
}
- 使用
using namespace
引入整个命名空间:这种方式可以方便地使用命名空间中的所有成员,但也可能导致命名污染,特别是在多个命名空间中存在同名成员时。
#include <iostream>
using namespace std;
using namespace MyNamespace; // 引入整个MyNamespace命名空间
int main() {
printValue(); // 直接调用printValue函数,无需前缀
cout << "Value from MyNamespace: " << value << endl; // 直接访问value变量
return 0;
}
- 使用
using
声明引入命名空间中的特定成员:这种方法更为灵活,只引入需要的成员,避免了命名污染的问题。
#include <iostream>
using namespace std;
using MyNamespace::printValue; // 引入MyNamespace中的printValue函数
int main() {
printValue(); // 直接调用printValue函数,无需前缀
// 注意:此时不能直接访问MyNamespace::value,因为它没有被引入
return 0;
}
三、C++的输入与输出
C++提供了cin
和cout
来进行输入输出,它们比C语言中的scanf
和printf
更加方便,因为不需要指定数据的格式。
使用cin
和cout
的示例:
#include <iostream>
using namespace std;
int main() {
int num;
cout << "Enter a number: ";
cin >> num; // 读取用户输入
cout << "You entered: " << num << endl; // 输出用户输入的值
string str;
cout << "Enter a string: ";
getline(cin, str); // 使用getline读取包含空格的字符串
cout << "You entered: " << str << endl;
return 0;
}
在上面的示例中,首先使用cout
输出提示信息,然后使用cin
读取用户的输入。
四、C++的缺省参数
缺省参数允许我们在函数声明或定义时为参数指定一个默认值。如果调用函数时没有提供某个参数的值,那么将使用其缺省值。
全缺省参数
全缺省参数是指函数的所有形参都设置了缺省值。调用时,可以省略任意数量的参数。
void printMessage(string name = "World", int times = 1)
{
for (int i = 0; i < times; i++) {
cout << "Hello, " << name << "!" << endl;
}
}
调用示例:
printMessage(); // 输出: Hello, World!
printMessage("C++"); // 输出: Hello, C++!
printMessage("C++", 3); // 输出: Hello, C++! (三次)
- 半缺省参数
半缺省参数是指只有部分形参设置了缺省值。调用时,必须提供没有缺省值的参数,但可以省略有缺省值的参数。
void printMessage(string name, int times = 1) {
// ... 函数实现 ...
}
调用示例:
printMessage("World"); // 输出: Hello, World!
printMessage("C++", 3); // 输出: Hello, C++! (三次)
注意事项:
- 半缺省参数必须
从右向左
依次给出,不能间隔设置。 - 缺省参数不能在
函数声明和定义
中同时出现。 - 缺省值必须是
常量
或全局变量
。