优秀的编程知识分享平台

网站首页 > 技术文章 正文

《学习C++》之基本概念

nanyue 2025-08-01 19:39:55 技术文章 2 ℃

一个C++程序由一系列源文件(source file),经过转化,成为可执行程序代码(或库)。源文件为文本文件,遵循C++语言标准,虽人为可读但计算机无法直接执行;转化后的可执行代码为机器语言(machine language,计算机可以直接执行但人为基本不可读。这个转化过程称为翻译(translation),本质上是将一种高级语言(面向人)翻译为低级语言(面向计算机)。学习C++主要学习的是C++语言标准,其基本概念中涉及到一系列词法元素(lexical element语法元素(grammer element)


C++词法涉及的概念有:

标识符(Identifier)和关键字(Keyword)

C++声明中引入的名通过标识符表示,标识符由字母、数字、下划线组成。

部分特殊的标识符被C++标准保留作为关键字,关键字无法再提供普通标识符的功能,也不能被重定义。

字面量(Literal)

C++程序中有一种令牌(即语法单元),直接嵌入在代码中表示常量,这些称为字面量字面量有整型、浮点型、字符、字符串、布尔、自定义等类型,其类型和值在编译期已确定。

其中字符、字符串常量中可能会涉及到无法正常输入的字符,这种情况需要使用转义序列(escape sequence)表示。

运算符(operator)与标点符号(punctuator)

运算符和标点符号可能由单字符组成(例如:+-*/),也可能由多字符组成(例如:++、--、<=>)。这些符号具有特定的语法含义和用途。

注释(Comment)

注释主要面向人的阅读,其在翻译阶段被忽略,编译器将其当成空白处理。故实际上注释不能算作词法元素,在预编译阶段和编译阶段之前,注释已被移除并替换为空格。


C++语法涉及的概念有:

声明(Declaration)

根据C++标准,C++源文件(准确说是预处理过后的文件)由一系列的声明组成。

实体(Entity)

声明可能引入实体,同时将实体与其名(name)特性(property)关联起来。C++程序中的实体有:

  • 值(value)
  • 对象(object)
  • 引用(reference)
  • 函数(function)
  • 枚举(enumerator)
  • 类型(type)
  • 类成员(class member)
  • 模版(template)
  • 模版特化(template specializations)
  • 命名空间(namespace)

现代C++标准(C++11以及之后)引入新的实体:

  • 包(pack):C++11
  • 结构化绑定(structured binding):C++17
  • 结果绑定(result binding):C++26

定义(Definition)

如果声明中完全定义了实体所需的所有特性,那么这种声明也成为定义

关于定义存在一个非常重要的法则,单一定义规则(One Definition Rule,ODR),即程序中对于同一实体不能重复定义,除非是inline函数或对象。

函数(Function)

函数的定义由一系列语句(statement)组成,部分语句中含有表达式(expression),这些指明了程序需要执行的计算过程。

名(Name)

程序中出现的名需要与引入它的声明相关联,这个关联过程称为名称查找(name lookup)

每个名都有其作用域(scope),作用域外,名不可用。

当名和其引用的实体出现在不同的作用域或者TU中时,这些名具有链接性(Linkage)。链接性指明了名的可见性和共享方式。

型(Type)

每个对象、引用、函数、表达式都关联一种类型(简称型)。可能为基本类型(fundamenta)、复杂类型(compound)、自定义类型(user-defined);也可能是完整类型(complete)或不完整类型(incomplete)。

变量(Variable)

声明的对象或引用,如果其不是类的非静态对象成员,则称之为变量。

最近发表
标签列表