C++学习

1 命名空间

命名空间可作为附加信息来区分不同库中相同名字的函数、类、变量等,本质上命名空间定义了一个范围。

1.1 定义命名空间

使用关键字namespace,后跟命名空间的名称。

1
2
3
4
namespace ns_name
{
//code
}

调用该命名空间内的函数或变量等,如下:

1
ns_name::code;

2 类

定义类需要关键字class,然后指定类的名称,类的主体包含在一对花括号内,主体包含类的成员变量和成员函数。
cpp-classes-objects

2.1 访问数据成员

使用 . 来访问类中的变量。

2.2 类访问修饰符

数据封装是面向对象编程重要特点之一,防止函数直接访问类内部成员。类成员访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。成员和类的默认访问修饰符是 private

2.2.1 public

公有成员变量在程序中不需要使用任何成员函数即可设置和获取值。

2.2.2 private

私有成员在类的外部是不可访问的,只有类和友元函数可以访问私有成员。
默认情况下,类的所有成员都是私有的。
实际操作中,一般在私有区域定义数据,在公有区域定义相关函数,便于在类的外部也可以访问数据。

2.2.3 protected

protected 成员与 private 成员类似,但 protected 成员在派生子类中是可访问的。

2.2.4 继承中的特点

  • private成员只能被本类成员和友元访问,不能被派生类访问
  • protected成员可以被派生类访问

3 函数

3.1 sprintf

3.1.1 描述

int sprintf(char str, const char format, ...)发送格式化输出到 str 指向的字符串。

3.1.2 声明

1
int sprintf(char *str, const char *format, ...)

3.1.3 参数

  • str:指向一个字符数组的指针
  • format:字符串,包含了要被写入 str 的文本

3.2 .c_str ()

  • .c_str()std::string 提供的函数
  • 返回一个指向以 NULL 结尾的 const char C*风格的字符串
  • 不复制字符串,只提供内部数据指针
1
2
std::string s = "hello";
const char* p = s.c_str(); // p 指向 "hello\0"

4 关键字

4.1 virtual 虚函数

虚函数允许子类重写它,从而在运行时通过基类指针或引用调用子类的重写版本,实现动态绑定。
我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函数,这种操作被称为动态链接,或后期绑定。
特点

  • 在基类中可以有实现。通常虚函数在基类中提供默认实现,但派生类可以选择重写

C++学习
https://www.moerjielovecookie.icu/2025/07/22/C++学习/
作者
Sawen Moerjie
发布于
2025年7月22日
许可协议