C++ 基础和基本语法

文章目录

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 Worldreturn 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 Worldreturn 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.xdnf.cn/news/1486503.html

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

相关文章

JAVA毕业设计634—基于Java+SSM的校园快递物流管理系统(源代码+数据库+11000字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSSM的校园快递物流管理系统(源代码数据库11000字论文)634 一、系统介绍 本项目分为用户、快递员、管理员三种角色 1、用户&#xff1a; 注册、登录、待取件信息管理、快…

【视觉SLAM】 十四讲ch5习题

1.*寻找一个相机&#xff08;你手机或笔记本的摄像头即可&#xff09;&#xff0c;标定它的内参。你可能会用到标定板&#xff0c;或者自己打印一张标定用的棋盘格。 参考我之前写过的这篇博客&#xff1a;【OpenCV】 相机标定 calibrateCamera Code来源是《学习OpenCV3》18.…

全国区块链职业技能大赛国赛考题前端功能开发

任务3-1:区块链应用前端功能开发 1.请基于前端系统的开发模板,在登录组件login.js、组件管理文件components.js中添加对应的逻辑代码,实现对前端的角色选择功能,并测试功能完整性,示例页面如下: 具体要求如下: (1)有明确的提示,提示用户选择角色; (2)用户可看…

2024年第二季度 DDoS 威胁趋势报告

2024 年上半年&#xff0c;Cloudflare 缓解了 850 万次 DDoS 攻击&#xff1a;第一季度 450 万次&#xff0c;第二季度 400 万次。总体而言&#xff0c;第二季度 DDoS 攻击数量环比下降了 11%&#xff0c;但同比增长了 20%。 DDoS 攻击分布&#xff08;按类型和手段&#xff09…

pytorch学习(十一)checkpoint

当训练一个大模型数据的时候&#xff0c;中途断电就可以造成已经训练几天或者几个小时的工作白做了&#xff0c;再此训练的时候需要从epoch0开始训练&#xff0c;因此中间要不断保存&#xff08;epoch&#xff0c;net&#xff0c;optimizer&#xff0c;scheduler&#xff09;等…

Java | Leetcode Java题解之第274题H指数

题目&#xff1a; 题解&#xff1a; class Solution {public int hIndex(int[] citations) {int left0,rightcitations.length;int mid0,cnt0;while(left<right){// 1 防止死循环mid(leftright1)>>1;cnt0;for(int i0;i<citations.length;i){if(citations[i]>mi…

Vue 3 实现左侧列表点击跳转滚动到右侧对应区域的功能

使用 Vue 3 实现左侧列表点击跳转到右侧对应区域的功能 1. 引言 在这篇博客中&#xff0c;我们将展示如何使用 Vue 3 实现一个简单的页面布局&#xff0c;其中左侧是一个列表&#xff0c;点击列表项时&#xff0c;右侧会平滑滚动到对应的内容区域。这种布局在很多应用场景中都…

金字塔思维:打造清晰有力的分析报告与沟通技巧

金字塔思维&#xff1a;打造清晰有力的分析报告与沟通技巧 在职场中&#xff0c;撰写一份条理清晰、逻辑严谨、说服力强的分析报告是每位职场人士必备的技能。然而&#xff0c;许多人在完成报告后常常感到思路混乱&#xff0c;表达不清。为了帮助大家解决这一问题&#xff0c;本…

VSCode部署Pytorch机器学习框架使用Anaconda(Window版)

目录 1. 配置Anaconda1.1下载安装包1. Anaconda官网下载2, 安装Anaconda 1.2 创建虚拟环境1.3 常用命令Conda 命令调试和日常维护 1.4 可能遇到的问题执行上述步骤后虚拟环境仍在C盘 2. 配置cuda2.1 查看显卡支持的cuda版本2.2 下载对应cuda版本2.3 下载对应的pytorch可能出现的…

学习React(状态管理)

随着你的应用不断变大&#xff0c;更有意识的去关注应用状态如何组织&#xff0c;以及数据如何在组件之间流动会对你很有帮助。冗余或重复的状态往往是缺陷的根源。在本节中&#xff0c;你将学习如何组织好状态&#xff0c;如何保持状态更新逻辑的可维护性&#xff0c;以及如何…

SQL 简单查询

目录 一、投影查询 1、指定特定列查询 2、修改返回列名查询 3、计算值查询 二、选择查询 1、使用关系表达式 2、使用逻辑表达式 3、使用 BETWEEN关键字 4、使用 IN关键字 5、使用 LIKE关键字 6、使用 IS NULL/ NOT NULL关键字 7、符合条件查询 三、聚合函数查询 一…

vuepress搭建个人文档

vuepress搭建个人文档 文章目录 vuepress搭建个人文档前言一、VuePress了解二、vuepress-reco主题个人博客搭建三、vuepress博客部署四、vuepress后续补充 总结 vuepress搭建个人文档 所属目录&#xff1a;项目研究创建时间&#xff1a;2024/7/23作者&#xff1a;星云<Xing…

Nuxt 使用指南:掌握 useNuxtApp 和运行时上下文

title: Nuxt 使用指南&#xff1a;掌握 useNuxtApp 和运行时上下文 date: 2024/7/21 updated: 2024/7/21 author: cmdragon excerpt: 摘要&#xff1a;“Nuxt 使用指南&#xff1a;掌握 useNuxtApp 和运行时上下文”介绍了Nuxt 3中useNuxtApp的使用&#xff0c;包括访问Vue实…

[Spring] Spring日志

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

python实现责任链模式

把多个处理方法串成一个list。下一个list的节点是上一个list的属性。 每个节点都有判断是否能处理当前数据的方法。能处理&#xff0c;则直接处理&#xff0c;不能处理则调用下一个节点&#xff08;也就是当前节点的属性&#xff09;来进行处理。 Python 实现责任链模式&#…

在浏览器中测试JavaScript代码方法简要介绍

在浏览器中测试JavaScript代码方法简要介绍 在浏览器中测试JavaScript代码是前端开发中的一个重要技能。方法如下&#xff1a; 1. 浏览器控制台 最简单和直接的方法是使用浏览器的开发者工具中的控制台&#xff08;Console&#xff09;。 步骤&#xff1a; 在大多数浏览器…

Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示

Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示 目录 Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示 一、简单介绍 二、共享纹理 1、共享纹理的原理 2、共享纹理涉及到的关键知识点 3、什么可以实现共享 不能实现共享…

有关于链表带环的两道OJ题目

目录 1.判断链表是否带环 1.1快指针的速度为慢指针的2倍 1.2快指针的速度为慢指针的3倍 2.找出带环链表开始入环的第一个节点 2.1将快慢指针相遇的节点与后面分开&#xff0c;构造交叉链表 2.2记录快慢指针相遇节点&#xff0c;与头结点一起向后走&#xff0c;相遇点为入…

远程开启空调,享受即刻凉爽

随着夏季的热浪逐渐侵袭&#xff0c;我们都渴望回到家中那一刻&#xff0c;能感受到一丝丝的凉意。但是&#xff0c;有时候&#xff0c;即使我们提前开窗通风&#xff0c;房间里的温度依然像烤箱一样闷热难耐。那么&#xff0c;有没有一种方法&#xff0c;能让我们在外头酷暑难…

升级Nvidia CUDA 遇到 sub-process /usr/bin/dpkg returned an error code (1)

1.问题描述 在自己Ubuntu22.04的服务器环境上存在cuda版本为11.5&#xff0c;按照官网教程升级为12.1运行安装命令 sudo apt-get -y install cuda 报错&#xff1a;sub-process /usr/bin/dpkg returned an error code (1) 官网教程&#xff1a; https://developer.nvidia…