您现在的位置是:首页 > 编程 > 

C++基础语法简单介绍(一)

2025-07-23 08:28:09
C++基础语法简单介绍(一) 1.C++ 版本历史C和C++的比较作者: Bjarne Stroustrup版本发布时间主要特性C with Classes 1979引入面向对象基本特性,包括 Class、构造函数、析构函数等C++198函数重载、运算符重载、多态、模板、命名空间C++标准化阶段开始,引入 STLC++0200修复 C++98 的缺陷C++现代C++阶

C++基础语法简单介绍(一)

1.C++ 版本历史

C和C++的比较

作者: Bjarne Stroustrup

版本

发布时间

主要特性

C with Classes

1979

引入面向对象基本特性,包括 Class、构造函数、析构函数等

C++

198

函数重载、运算符重载、多态、模板、命名空间

C++98

1998

标准化阶段开始,引入 STL

C++0

200

修复 C++98 的缺陷

C++11

2011

现代C++阶段开始,引入自动类型推导、Lambda 表达式、右值引用、智能指针等

C++14

2014

泛型 Lambda 表达式、返回类型推导、二进制字面量等

C++17

2017

结构化绑定、std::optional、并行算法等

C++20

2020

概念、范围库、协程、std::format 等

C++2

202

模块化标准库、std::expected、std::mdspan 等

C with classes

泛型

其他语法特性

2.C和C++的区别

1. 函数原型

C 代码:C 允许省略函数原型中的参数类型。

C++ 代码:C++ 要求函数必须有完整的原型声明。

C++11 不是 C 的严格超集:尽管 C++11 兼容大多数 C 代码,但由于语法、关键字和类型系统的差异,并非所有 C 代码都能直接在 C++11 中编译。

代码语言:cpp代码运行次数:0运行复制
// 在 C 语言中
void foo();    // 表示:"foo 是一个函数,可以接受任意数量和类型的参数"

// 在C++中
void foo();    // 表示:"foo 是一个函数,不接受任何参数"
void foo(void);// 表示:"foo 是一个函数,不接受任何参数"

//如果 C 代码中省略了参数类型,C++ 编译器会报错:
void foo();  // C 代码
foo(10);     // C 中合法,C++ 中报错

2.类型转换

C 代码:C 允许隐式类型转换(如 void* 到其他指针类型)。

C++ 代码:C++ 要求显式类型转换。

代码语言:cpp代码运行次数:0运行复制
// C 代码
void* ptr = malloc(10);  // 不需要显式类型转换

// C++ 代码
void* ptr = malloc(10);  // 需要显式类型转换
如果 C 代码中没有显式类型转换,C++ 编译器会报错:

// C 中合法,C++ 中报错
int* ptr = malloc(10); 

. 关键字冲突

C 代码:C 中没有 C++ 的关键字(如 class、new、delete 等)。

C++ 代码:C++ 引入了新的关键字,这些关键字在 C 中可能被用作标识符。

代码语言:cpp代码运行次数:0运行复制
示例:
c
复制
// C 代码
int class = 10;  // class 是合法的标识符

// C++ 代码
int class = 10;  // 错误:class 是关键字
如果 C 代码中使用了 C++ 的关键字作为标识符,C++ 编译器会报错:

int new = 10;  // C 中合法,C++ 中报错

4.布尔类型

C 代码:C 需要包含 <stdbool.h> 才能使用 bool 类型。

C++ 代码:C++ 有内置的 bool 类型。

代码语言:cpp代码运行次数:0运行复制
// C 代码
#include <stdbool.h>
bool flag = true;

// C++ 代码
bool flag = true;  // 不需要额外头文件

5.枚举类型

C 代码:C 中的枚举类型可以隐式转换为整数。

C++ 代码:C++ 中的枚举类型是强类型的,不能隐式转换为整数。

代码语言:cpp代码运行次数:0运行复制
enum Color { RED, GREE, BLUE };
int x = RED;  // C 中合法,C++ 中报错

6.函数重载

C 代码:C 不支持函数重载。

C++ 代码:C++ 支持函数重载。

代码语言:cpp代码运行次数:0运行复制
void print(int x) {}
void print(double x) {}  // C 中报错,C++ 中合法

7. 结构体声明

C 代码:C 中声明结构体变量时需要 struct 关键字。

C++ 代码:C++ 中可以直接使用结构体名称。

代码语言:cpp代码运行次数:0运行复制
// C 代码
struct Point { int x, y; };
struct Point p1;  // 需要 struct 关键字

// C++ 代码
struct Point { int x, y; };
Point p1;  // 不需要 struct 关键字

8.字符串字面量

C 代码:C 中的字符串字面量是 char* 类型。

C++ 代码:C++ 中的字符串字面量是 ct char* 类型。

代码语言:cpp代码运行次数:0运行复制
// C 代码
char* str = "Hello";  // 合法

// C++ 代码
ct char* str = "Hello";  // 合法
char* str = "Hello";  // 错误:不能将 ct char* 赋值给 char*

9.隐式函数声明

C 代码:C 允许隐式函数声明(即未声明直接使用函数)。

C++ 代码:C++ 要求函数必须先声明后使用。

代码语言:cpp代码运行次数:0运行复制
int main() {
    foo();  // C 中合法,C++ 中报错
    return 0;
}

void foo() {
    printf("Hello\n");
}
代码语言:cpp代码运行次数:0运行复制

2.源文件和头文件管理

可以使用.hpp和.cpp, , .cxx作为头文件和源文件后缀

支持#pragma once宏防止头文件被重复包含

对于标准库,可以使用#include <iostream> 这种不带.h的方式

对于C的标准库,可以使用#include <cstdio> // C++ 的 stdio.

存在命名空间,例如using namespace xxx

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1177217.html

相关标签:无
上传时间: 2025-07-21 19:25:51
留言与评论(共有 8 条评论)
本站网友 杨家群租房
22分钟前 发表
std
本站网友 会声会影安装序列号
28分钟前 发表
可以接受任意数量和类型的参数" // 在C++中 void foo(); // 表示:"foo 是一个函数
本站网友 搜霸
18分钟前 发表
模板
本站网友 重庆市人大主任
29分钟前 发表
范围库
本站网友 羟基氧化钴
18分钟前 发表
Bjarne Stroustrup版本发布时间主要特性C with Classes 1979引入面向对象基本特性
本站网友 嫦娥妹妹
27分钟前 发表
返回类型推导
本站网友 临沂在线房产网
14分钟前 发表
C++ 中合法7. 结构体声明C 代码:C 中声明结构体变量时需要 struct 关键字