欢迎光临
我们一直在努力

Effective C++ 条款01:视 C++ 为一个语言联邦

Effective C++ 条款01:视 C++ 为一个语言联邦

本篇为《Effective C++:改善程序与设计的 55 个具体做法》读书笔记系列第一篇。

开篇引言

很多初学者在刚接触 C++ 时,常常会有这样的困惑:

  • 为什么 C++ 既有面向过程的语法,又有面向对象的特性?
  • 为什么模板(Template)的编程思维和写普通类完全不一样?
  • 为什么 STL 的使用方式看起来如此\”函数式\”?

Scott Meyers 在《Effective C++》开篇第一条就给出了答案:C++ 不是一个单一的编程语言,而是一个由多个次语言(sublanguages)组成的联邦。

理解这一点,是掌握 C++ 高效编程的基石。

核心观点

C++ 是一个多重范式编程语言(multi-paradigm programming language)。在同一个次语言中,各种高效编程守则简单易懂;但当你从一个次语言切换到另一个次语言时,守则可能会完全改变。

高效编程守则视状况而变化,取决于你使用 C++ 的哪一部分。

四大次语言详解

C++ 主要由以下四个次语言组成:

次语言
核心特性
适用场景
C 过程式编程、指针、数组、底层内存操作 系统编程、嵌入式、性能敏感代码
Object-Oriented C++ 类、继承、多态、封装、虚函数 大型软件架构、设计模式
Template C++ 泛型编程、模板元编程(TMP) 通用库、编译期计算、类型抽象
STL 容器、算法、迭代器、函数对象 数据结构与算法、标准库使用

1. C —— 过程式的基础

C++ 最初被命名为 “C with Classes”,它以 C 语言为基础。C 次语言涵盖了:

  • 基本数据类型(int、char、double 等)
  • 指针和数组
  • 流程控制(if、for、while)
  • 函数和结构体
  • 预处理器(#include、#define)

代码示例:

#include <cstdio>
#include <cstring>

// 纯 C 风格的字符串操作
void c_style_example() {


char buffer[256];
strcpy(buffer, \”Hello, C!\”);
printf(\”%s\\n\”, buffer);
}

在这个次语言中,高效编程守则是 C 语言的那一套:避免不必要的抽象,直接操作内存,关注性能细节。

2. Object-Oriented C++ —— 面向对象的扩展

这是 C++ 最初的设计目标,也是大多数开发者最熟悉的部分:

  • 类(class)和对象
  • 继承(inheritance)
  • 多态(polymorphism)与虚函数
  • 封装(encapsulation)

代码示例:

#include <iostream>
#include <string>

class Shape {


public:
virtual double area() const = 0; // 纯虚函数
virtual ~Shape() = default;
};

class Circle : public Shape {


public:
Circle(double r) : radius(r) {

}

double area() <

赞(0)
未经允许不得转载:171主机测评 » Effective C++ 条款01:视 C++ 为一个语言联邦
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址