C++ 基础和基本语法

news2025/2/23 0:45:45

文章目录

1. 简介

2. 基本解释

示例解释

3. 程序结构

HELLO WORLD

编译 & 执行 C++ 程序

4. 分号 和 语句块

5. 标识符

6. 关键字

7. 注释


1. 简介

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程,它综合了高级语言和低级语言的特点,它是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。

C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的C,后来在 1983 年更名为 C++。

注意:使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查。

面向对象程序设计

  • 封装(Encapsulation):
    • 将数据和方法组合在一起,对外隐藏实现细节,只公开对外提供的接口。
    • 提高安全性、可靠性和灵活性。
  • 继承(Inheritance):
    • 基于已有类创建新类,新类继承已有类的属性和方法,可以扩展和修改这些属性和方法。
    • 提高代码的复用性和可扩展性。
  • 多态(Polymorphism):
    • 同一操作作用于不同对象,有不同的解释和实现。
    • 通过接口或继承实现,提高代码的灵活性和可读性。
  • 抽象(Abstraction):
    • 提取共性特征,形成抽象类或接口。
    • 使程序专注于高层次的设计和业务逻辑,而不关注具体实现细节。

标准的 C++ 由三个重要部分组成:

  • 核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。
  • C++ 标准库,提供了大量的函数,用于操作文件、字符串等。
  • 标准模板库(STL),提供了大量的方法,用于操作数据结构等。

2. 基本解释

C++程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。

对象

  • 定义: 对象具有状态和行为。
  • 实例: 一只狗的状态包括颜色、名称、品种等,行为包括摇动、叫唤、吃等。对象是类的实例。
  • 状态和行为: 对象的状态由其属性(变量)表示,行为由其方法(函数)表示。

  • 定义: 类可以定义为描述对象行为和状态的模板或蓝图。
  • 作用: 类提供了创建对象的基础结构。通过类可以定义对象的属性和方法。

方法

  • 定义: 方法表示一种行为。
  • 作用: 一个类可以包含多个方法。方法可以用来逻辑操作数据以及执行所有的动作。
  • 示例: 类中定义的方法可以用来执行诸如计算、操作数据、更新状态等具体任务。

即时变量

  • 定义: 每个对象都有其独特的即时变量。
  • 作用: 对象的状态是由这些即时变量的值创建的。
  • 属性: 即时变量是类中的属性,表示对象的具体特征。

示例解释

假设我们要创建一个表示“动物”的类,比如小狗:

class Dog {
public:
    // 即时变量(属性)
    std::string name;
    std::string breed;
    std::string color;
    
    // 方法(行为)
    void bark() {
        std::cout << "Woof!" << std::endl;
    }
    
    void eat() {
        std::cout << "Eating..." << std::endl;
    }
    
    void wagTail() {
        std::cout << "Wagging tail..." << std::endl;
    }
};

在这个类中:

  • Dog 定义了一个狗的模板。
  • 即时变量 namebreedcolor 定义了狗的状态。
  • 方法 barkeatwagTail 定义了狗的行为。

我们可以创建 Dog 类的对象,并调用其方法:

Dog myDog;
myDog.name = "Buddy";
myDog.breed = "Golden Retriever";
myDog.color = "Golden";

myDog.bark();     // 输出:Woof!
myDog.eat();      // 输出:Eating...
myDog.wagTail();  // 输出:Wagging tail...

这些解释就是C++中的类和对象,以及如何通过方法来定义对象的行为和通过即时变量来定义对象的状态。

3. 程序结构

HELLO WORLD

#include <iostream>
using namespace std;
 
// main() 是程序开始执行的地方
 
int main()
{
   cout << "Hello World"; // 输出 Hello World
   return 0;
}
  • C++ 语言定义了一些头文件,这些头文件包含了程序中必需的或有用的信息。上面这段程序中,包含了头文件 <iostream>
  • 下一行 using namespace std; 告诉编译器使用 std 命名空间。命名空间是 C++ 中一个相对新的概念。
  • 下一行 // main() 是程序开始执行的地方 是一个单行注释。单行注释以 // 开头,在行末结束。
  • 下一行 int main() 是主函数,程序从这里开始执行。
  • 下一行 cout << "Hello World"; 会在屏幕上显示消息 "Hello World"。
  • 下一行 return 0; 终止 main( )函数,并向调用进程返回值 0。

编译 & 执行 C++ 程序

  • 打开一个文本编辑器,添加上述代码。
  • 保存文件为 hello.cpp。
  • 打开命令提示符,进入到保存文件所在的目录。
  • 键入 'g++ hello.cpp ',输入回车,编译代码。如果代码中没有错误,命令提示符会跳到下一行,并生成 a.out 可执行文件。
  • 现在,键入 ' a.out' 来运行程序,就可以看到屏幕上显示 ' Hello World '。
$ g++ hello.cpp
$ ./a.out
Hello World

4. 分号 和 语句块

在 C++ 中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。

例如,下面是三个不同的语句:

x = y;
y = y+1;
add(x, y);

语句块是一组使用大括号括起来的按逻辑连接的语句。例如:

{
   cout << "Hello World"; // 输出 Hello World
   return 0;
}

C++ 不以行末作为结束符的标识,因此,您可以在一行上放置多个语句。例如:

x = y;
y = y+1;
add(x, y);

等同于

x = y; y = y+1; add(x, y);

5. 标识符

C++ 标识符是用来标识变量、函数、类、模块,或任何其他用户自定义项目的名称。一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。

C++ 标识符内不允许出现标点字符,比如 @、& 和 %。C++ 是区分大小写的编程语言。因此,在 C++ 中,Manpower 和 manpower 是两个不同的标识符。

下面列出几个有效的标识符:

mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

6. 关键字

C++ 关键字是编程语言保留的单词,这些单词具有特定的含义,并在编译过程中被编译器识别和处理。由于关键字有特殊的用途,因此不能将它们用作标识符(变量名、函数名、类名等)。

完整的关键字解析看这篇文章:

C++ 关键字完整介绍-CSDN博客

7. 空格

只包含空格的行,被称为空白行,可能带有注释,C++ 编译器会完全忽略它。

在 C++ 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。因此,在下面的语句中:

int age;

在这里,int 和 age 之间必须至少有一个空格字符(通常是一个空白符),这样编译器才能够区分它们。另一方面,在下面的语句中:

fruit = apples + oranges;   // 获取水果的总数

fruit 和 =,或者 = 和 apples 之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。

7. 注释

程序的注释是解释性语句,您可以在 C++ 代码中包含注释,这将提高源代码的可读性。所有的编程语言都允许某种形式的注释。

C++ 支持单行注释和多行注释。注释中的所有字符会被 C++ 编译器忽略。

C++ 注释一般有两种:

  • //  一般用于单行注释。

  • /* ... */  一般用于多行注释。

#include <iostream>
using namespace std;
 
int main() {
  // 这是一个注释
  cout << "Hello World!";
  return 0;
}
#include <iostream>
using namespace std;
 
int main() {
    /* 这是注释 */
 
    /* C++ 注释也可以
     * 跨行
     */ 
    cout << "Hello World!";
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1943155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HCIA-综合实验】

实验拓扑 实验要求 总经理VLAN2 财务部VLAN3 销售部VLAN4 DNS服务器VLAN5。SW3为VLAN2 3 4 5的网关&#xff0c; SW3启用接口地址池为VLAN2 3动态分配地址。交换机连接终端开启边缘端口&#xff0c;并进行BPDU保护&#xff0c;在SW1和SW2、SW3进行STP优化。R1和SW3链路聚合&am…

Linux 内核模块加载知多少

文章目录 目录 1. 内核模块 内核模块的作用 2. 内核模块的加载 2.1 内核模块的加载过程 2.2 内核模块加载方式 使用 insmod 加载模块 使用 modprobe 加载模块 2.3 内核模块加载顺序 3. 常用的相关命令 4. 总结 工作还在继续&#xff0c;学习还在继续&#xff0c;学习…

【算法/学习】前缀和差分

前缀和&&差分目录 1. 前缀和的概念及作用 &#x1f308;概念 &#x1f308;用途 &#x1f319;一维前缀和 &#x1f319;二维前缀和 2. 差分的概念及用途 &#x1f308;概念&#xff1a; &#x1f308;用途 &#x1f319;一维差分 &#x1f319;二维差分 1. …

sap 权限控制例子

文章目录 1 T-code2 Method3 Summary 1 T-code We use t-code is ‘su21’ and ‘PFCG’ . Creat Authorization objects . Create role 2 Method DATA: zbz(1).CLEAR:zbz.SELECT SINGLE COUNT(*) FROM agr_users WHERE uname sy-uname AND agr_name ZMM_PRICE001.&q…

redis全局唯一ID生成策略、countDownLatch、Lambda表达式总结

redis全局唯一ID生成策略 一、有哪些生成全局唯一ID的策略二、使用Redis自增1. 分析2. RedisIdWorker配置类3 单元测试注解分析&#xff08;难点较多&#xff09;3.1 countDownLatch前言3.2 常用方法 一、有哪些生成全局唯一ID的策略 二、使用Redis自增 1. 分析 2. RedisIdWor…

《数据结构1800题》基础回合总结——第1章 绪论

前言&#xff1a;《数据结构1800》这本书相信大家或多或少都有所耳闻&#xff0c;收录了诸多不同档次学校的考研真题&#xff0c;因为和汤老师的1800撞名所以备受调侃。这1800道题目里面有选择有填空&#xff0c;也有简答和一些编程题&#xff0c;总的来说质量良莠不齐——亦或…

Transformer之Swin-Transformer结构解读

写在最前面之如何只用nn.Linear实现nn.Conv2d的功能 很多人说&#xff0c;Swin-Transformer就是另一种Convolution&#xff0c;但是解释得真就是一坨shit&#xff0c;这里我郑重解释一下&#xff0c;这是为什么&#xff1f; 首先&#xff0c;Convolution是什么&#xff1f; Co…

GaussianPro使用笔记

1. 介绍 GaussianPro: 3D Gaussian Splatting with Progressive Propagation 3D高斯分布(3DGS)最近以其高保真度和效率彻底改变了神经渲染领域。然而&#xff0c;3DGS在很大程度上依赖于运动结构&#xff08;SfM&#xff09;技术生成的初始化点云。当处理不可避免地包含无纹理…

语音识别 语音识别项目相关笔记内容

语音识别 语音识别项目相关笔记内容 语音识别应用范畴语音识别框架语音基本操作使用scipy.io.wavfile读取wav音频文件获取采样率、长度、通道数使用numpy读取pcm格式音频文件读取wav音频文件,并绘制图像读取双声道的wav音频文件,分别绘制不同声道的波形图读取一个采样率为16k…

拍立淘API返回值:图像搜索技术的商品信息获取指南

拍立淘API是基于图像搜索技术的商品信息获取工具&#xff0c;广泛应用于阿里巴巴旗下的电商平台如淘宝、天猫等。这一API通过用户上传的商品图片&#xff0c;利用深度学习、计算机视觉等先进技术自动识别图片中的商品信息&#xff0c;并返回与之相关的搜索结果。以下是对拍立淘…

go语言Gin框架的学习路线(八)

目录 GORM Model定义 使用 Model 结构体的自定义数据模型 理解并记忆 GORM 的 Model 结构体可以通过以下几个步骤和技巧&#xff1a; 1. 理解基本概念 2. 熟悉基本字段 3. 记忆技巧 4. 使用场景 结构体标记 支持的结构体标记&#xff08;Struct tags&#xff09; 关联…

浏览器渲染揭秘:从加载到显示的全过程;浏览器工作原理与详细流程

目录 浏览器工作原理与流程 一、渲染开始时间点 二、渲染主线程的渲染流程 2.1、渲染流程总览 2.2、渲染具体步骤 ①解析html-Parse HTML ②样式计算-Recalculate Style ③布局-Layout ④分层-Layer 相关拓展 ⑤绘制-Paint ⑥分块-Tiling ⑦光栅化-Raster ⑧画-D…

四川赤橙宏海商务信息咨询有限公司引领抖音电商新趋势

随着互联网的飞速发展&#xff0c;电子商务已成为企业竞争的新高地。在众多电商平台中&#xff0c;抖音以其独特的短视频直播形式&#xff0c;吸引了亿万用户的目光&#xff0c;成为电商领域的新宠。在这样的背景下&#xff0c;四川赤橙宏海商务信息咨询有限公司凭借其专业的电…

新零售电商:订单管理系统设计

传统电商依托于线上流量产生消费者&#xff0c;新零售则是通过网上商城、小程序以及其他应用程序相结合形成网店&#xff0c;同时与线下实体门店和现代物流进行深度整合&#xff0c;最终形成了新的销售模式。 订单管理系统上下游对接系统繁杂&#xff0c;包括&#xff1a;商品中…

【Java语法基础】1、变量、运算符、输入输出

1.变量、运算符、输入输出 跟C一样&#xff0c;先把必须写的框架写出来&#xff1a; package org.example; public class Main{public static void main(String[] args){//在里面写实际的代码} }变量 必须先定义&#xff0c;才能使用。与C、C差不多。 没有赋初值的变量无法…

如何实现Web服务只允许特定客户端访问

如何实现Web服务只允许特定客户端访问 需求来源 为了满足B/S系统给客户演示的需要&#xff0c;需要部署一套系统允许公网能够访问&#xff0c;便于业务人员到客户哪里进行系统演示&#xff0c;但是目前网络安全非常重要&#xff0c;希望能防止暴力破解或者端口扫描等黑客攻击…

全网最实用--神经网络各个组件以及效率指标 (含代码助理解,粘贴即用)

文章目录 一、神经网络相关组件0.前奏1.全连接层&#xff08;Fully Connected Layer, FC&#xff09;/密集层&#xff08;Dense Layer&#xff09;:2.卷积层&#xff08;Convolutional Layer, Conv&#xff09;:a.一维卷积b.二维卷积c.分组卷积 3.池化层&#xff08;Pooling La…

汇编语言例题分析

以下数据段定义了如下数据&#xff0c;对应内存图请填空&#xff0c;写出每个内存字节中的2位16进制数&#xff08;注意写准确&#xff0c;2位16进制数&#xff0c;末尾不带h&#xff09;。 Data1 segment x db 1,2,3 y db “ABa” z dw 1,2 Data1 ends 物理地址从0000开始&…

C语言指针超详解——最终篇二

C语言指针系列文章目录 入门篇 强化篇 进阶篇 最终篇一 最终篇二 文章目录 C语言指针系列文章目录1. sizeof 与 strlen1.1 字符数组1.2 二维数组 2. 指针运算笔试题解析 以上接指针最终篇一 1. sizeof 与 strlen 1.1 字符数组 代码三&#xff1a; #include<stdio.h>…

『 Linux 』System V共享内存

文章目录 System V IPCSystem V 共享内存的直接原理System V共享内存的创建挂接共享内存取消挂接共享内存释放共享内存利用System V共享内存进行进程间通信共享内存的特性共享内存的属性通过命名管道为共享内存添加同步互斥机制 System V IPC System v 是一种操作系统和相关技术…