C++基础篇(一)常用关键字及示例

一、C++常见关键词

1、auto

auto: 自动类型推断。它可以让编译器根据变量的初始值自动推断出变量的类型。例如:

auto x = 42; // x 的类型为 int
auto y = 3.14; // y 的类型为 double

2、decltype

decltype: 类型推断。它可以根据表达式的类型推断出一个类型。例如:

int x = 0;
decltype(x) y = 1; // y 的类型为 int

3、try/catch

try/catch: 异常处理。它可以捕获并处理程序运行过程中抛出的异常。例如:

try {// 可能抛出异常的代码
} catch (const std::exception& e) {// 处理异常
}

4、class

class: 类定义。它用于定义一个类,类是 C++ 面向对象编程的基础。例如:

class MyClass {
public:MyClass() { /* 构造函数 */ }~MyClass() { /* 析构函数 */ }
private:int myMember; // 类成员
};

4、constexpr

constexpr: 常量表达式。它用于定义一个在编译时就能确定值的常量。例如:

constexpr int x = 42; // 编译时常量

5、new/delete

new/delete: 动态内存分配和释放。它们用于在运行时动态分配和释放内存空间。例如:

int* p = new int; // 分配内存
*p = 42;
delete p; // 释放内存

6、const_cast

const_cast: 常量转换。它可以去除变量的 const 属性,使其可以被修改。例如:

const int x = 0;
int* p = const_cast<int*>(&x); // 去除 const 属性
*p = 42; // 修改 x 的值

7、static_cast/dynamic_cast/reinterpret_cast

static_cast/dynamic_cast/reinterpret_cast: 类型转换。它们分别用于静态类型转换,动态类型转换和重新解释类型转换。例如:

double x = 3.14;
int y = static_cast<int>(x); // 静态类型转换class Base {};
class Derived : public Base {};
Base* b = new Derived;
Derived* d = dynamic_cast<Derived*>(b); // 动态类型转换int x = 42;
void* p = &x;
int* y = reinterpret_cast<int*>(p); // 重新解释类型转换

8、explicit

explicit: 显式构造函数。它可以防止构造函数被隐式调用。例如:

class MyClass {
public:explicit MyClass(int x) { /* 构造函数 */ }
};MyClass m1(42); // 正确
MyClass m2 = 42; // 错误,不能隐式调用构造函数

9、export

export: 模板导出。它用于导出模板定义,使其能够在其他c文件中使用。

10、friend

friend: 友元。它可以让一个类或函数访问另一个类的私有成员。例如:

class MyClass {friend void myFunction(MyClass& m);
private:int myMember;
};void myFunction(MyClass& m) {m.myMember = 42; // 可以访问私有成员
}

11、mutable

mutable: 可变成员。它可以让一个类的成员在 const 函数中被修改。例如:

class MyClass {
public:void myFunction() const {myMember = 42; // 可以在 const 函数中修改}
private:mutable int myMember;
};

12、using/namespace

using/namespace: 命名空间。它们用于定义和使用命名空间,避免命名冲突。例如:

namespace MyNamespace {int myFunction() { /* 函数定义 */ }
}using namespace MyNamespace; // 使用命名空间
myFunction(); // 调用函数

13、noexcept

noexcept: 不抛出异常。它指定一个函数不会抛出异常。例如:

void myFunction() noexcept {// 不会抛出异常的代码
}

14、nullptr

nullptr: 空指针。它是一种特殊的指针值,表示空指针。例如:

int* p = nullptr; // 空指针

15、operator

operator: 运算符重载。它用于重载类的运算符,使其能够像内置类型一样使用运算符。例如:

class MyClass {
public:MyClass operator+(const MyClass& other) const {// 运算符重载}
};MyClass m1, m2;
MyClass m3 = m1 + m2; // 使用重载的运算符

16、private/public

private/public: 访问控制。它们分别表示类成员只能在类内部访问和类成员可以在任何地方访问。例如:

class MyClass {
public:int myPublicMember; // 公有成员
private:int myPrivateMember; // 私有成员
};

17、static_assert

static_assert: 静态断言。它用于在编译时检查条件是否为真,如果不为真则编译失败。例如:

static_assert(sizeof(int) == 4, "int must be 4 bytes"); // 静态断言

18、template

template: 模板定义。它用于定义模板,实现泛型编程。例如:

template <typename T>
T myMax(T x, T y) {return x > y ? x : y;
}int x = myMax(1, 2); // 调用模板函数
double y = myMax(3.14, 2.71);

二、结语

本篇目的是为巩固自身的C++基础,给自身回顾,不保证完全正确,若有错误,敬请指正!

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

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

相关文章

面试之CurrentHashMap的底层原理

首先回答HashMap的底层原理? HashMap是数组链表组成。数字组是HashMap的主体&#xff0c;链表则是主要为了解决哈希冲突而存在的。要将key 存储到&#xff08;put&#xff09;HashMap中&#xff0c;key类型实现必须计算hashcode方法&#xff0c;默认这个方法是对象的地址。接…

input元素中的form属性有什么用?

在HTML中&#xff0c;input元素的form属性用于指定该输入字段所属的表单&#xff08;form元素&#xff09;。通过将input元素的form属性设置为相应的表单的id值&#xff0c;可以将输入字段与表单进行关联。 这个属性对于两个主要目的非常有用&#xff1a; 表单关联&#xff1…

【应用层】Http协议总结

文章目录 一、续->Http协议的学习 1.http请求中的get方法和post方法 2.http的状态码 3.http的报头 4.长链接 5.cookie&#xff08;会话保持&#xff09;总结 继续上一篇的内容&#xff1a; 上一篇的最后我们讲到了web根目录&#xff0c;知道…

epoll服务器创建

驱动 #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/io.h> #include <linux/device.h> #include <linux/uaccess.h> #include <linux/poll.h> unsigned int major; char kbuf[128]{0}…

使用Docker部署EMQX

原文链接&#xff1a;http://www.ibearzmblog.com/#/technology/info?id9dd5bf4159d07f6a4e69a6b379ce4244 前言 在物联网中&#xff0c;大多通信协议使用的都是MQTT&#xff0c;而EMQX是基于 Erlang/OTP 平台开发的 MQTT 消息服务器&#xff0c;它的优点很多&#xff0c;我…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(12)-Fiddler设置IOS手机抓包,你知多少???

1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求&#xff0c;也可以截获各种智能手机发出的HTTP/ HTTPS 请求。 Fiddler 能捕获Android 和 Windows Phone 等设备发出的 HTTP/HTTPS 请求。同理也可以截获iOS设备发出的请求&#xff0c;比如 iPhone、iPad 和 MacBook 等苹…

【BMC】OpenBMC使用基础(WSL2版本)

代码准备 OpenBMC是一个开源的项目&#xff0c;用于开发BMC固件。官网是https://www.openbmc.org/&#xff0c;不过里面似乎没有什么内容&#xff0c;所以还需要依赖其它的网站&#xff0c;https://github.com/openbmc&#xff0c;在这里可以下载到需要的代码和文档。其主体部…

C#,数值计算——对数正态分布(logarithmic normal distribution)的计算方法与源程序

对数正态分布&#xff08;logarithmic normal distribution&#xff09;是指一个随机变量的对数服从正态分布&#xff0c;则该随机变量服从对数正态分布。对数正态分布从短期来看&#xff0c;与正态分布非常接近。但长期来看&#xff0c;对数正态分布向上分布的数值更多一些。 …

Tailwind CSS:基础使用/vue3+ts+Tailwind

一、理解Tailwind 安装 - TailwindCSS中文文档 | TailwindCSS中文网 Installation - Tailwind CSS 1.1、词义 我们简单理解就是搭上CSS的顺风车&#xff0c;事半功倍。 1.2、Tailwind CSS有以下优势 1. 快速开发&#xff1a;Tailwind CSS 提供了一些现成的 class / 可复用…

ARM裸机-4

1、什么是交叉编译 1.1、两种开发模式 非嵌入式开发&#xff0c;A&#xff08;类&#xff09;机编写&#xff08;源代码&#xff09;、编译得到可执行程序&#xff0c;发布给A&#xff08;类&#xff09;机运行。 嵌入式开发&#xff0c;A&#xff08;类&#xff09;机编写&am…

webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1

webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1 1.问题2. 解决办法&#xff1a; 1.问题 使用webpack打包是报错如下&#xff1a; webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c…

Spring源码(三)Spring Bean生命周期

Bean的生命周期就是指&#xff1a;在Spring中&#xff0c;一个Bean是如何生成的&#xff0c;如何销毁的 Bean生命周期流程图 1、生成BeanDefinition Spring启动的时候会进行扫描&#xff0c;会先调用org.springframework.context.annotation.ClassPathScanningCandidateCompo…

Qt C++实现Excel表格的公式计算

用Qt的QTableViewQStandardItemModelQStyledItemDelegate实现类似Excel表格的界面&#xff0c;在parser 模块中提供解析表格单元格输入的公式。单元格编辑结束后按回车进行计算和更新显示。 效果如下&#xff1a; 支持的公式计算可以深度嵌套&#xff0c;目前parser模块中仅提…

【Java】零基础上手SpringBoot学习日记(day1)

前言 此帖为本人学习Springboot时的笔记&#xff0c;由于是个接触计算机一年左右的新手&#xff0c;也没有网站开发经验&#xff0c;所以有些地方的理解会比较浅显并且可能会出现错误&#xff0c;望大佬们多多包涵和指正。 Web应用开发 在我的理解中&#xff0c;Web应用的开发…

测试|测试分类

测试|测试分类 文章目录 测试|测试分类1.按照测试对象分类&#xff08;部分掌握&#xff09;2.是否查看代码&#xff1a;黑盒、白盒灰盒测试3.按开发阶段分&#xff1a;单元、集成、系统及验收测试4.按实施组织分&#xff1a;α、β、第三方测试5.按是否运行代码&#xff1a;静…

Mysql sql优化

目录 目的 目标 explain 优化 避免使用select * 用union all代替union 小表驱动大表&#xff08;in与exists&#xff09; 批量操作 多使用limit in中值太多 不使用%前缀模糊查询 不在where子句中进行表达式操作 避免隐式类型转换 联合索引遵守最左前缀法则 inne…

【Spring Boot 源码学习】走近 AutoConfigurationImportSelector

AutoConfigurationImportSelector 源码解析 引言主要内容1. ImportSelector 接口2. DeferredImportSelector 接口3. AutoConfigurationImportSelector 功能概述 总结 引言 上篇博文我们了解了 EnableAutoConfiguration 注解&#xff0c;其中真正实现自动配置功能的核心实现者 …

1.Oracle建表及使用

1.概述 1. 表&#xff1a;用于 存储数据 -- 是我们最常见的数据库对象 2. 表设计注意事项 (1) 表设计时&#xff0c;尽量遵从 第三范式&#xff08;3NF&#xff09; (2) 名称不能超过 30 个字符 -- 超过会报错 (3) 名称只能以 字母 大头&#xff0c;可由数字、 _、 $…

细讲TCP三次握手四次挥手(二)

TCP/IP 协议族 应用层 应用层( application-layer &#xff09;的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程&#xff08;进程&#xff1a;主机中正在运行的程序&#xff09;间的通信和交互的规则。 对于不同的网络应用需要不同的应用层协议…

C语言字串函数、内存函数介绍以及模拟实现

目录 前言 本期内容介绍&#xff1a; 一、字符串函数 strlen介绍 strlen 模拟实现&#xff08;三种方式&#xff09; 方法一&#xff1a;计数器法 方法二&#xff1a;递归法&#xff08;不创建临时变量法&#xff09; 方法三&#xff1a;指针-指针 strcpy介绍 strcpy模…