Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++ 20 学习笔记1 --From BiliBili.com

C++ 20 学习笔记1 --From BiliBili.com

原创
作者头像
BrianLee
修改于 2023-02-11 08:33:36
修改于 2023-02-11 08:33:36
4970
举报

CPP1、一个函数返回多个变量的方式:

1、通过引用传递参数,函数内修改参数值后,函数外部自动改变;

2、通过指针传递参数,比引用传参好的点是,可以传nullPtr;

3、Tuple

4、Pair

5、std::array 取值麻烦,array.get<0>(sources);

不晓得这个0参数具体含义,不直观;

6、struct包装多个变量,return {x,y};

即可将x,y的值返回给调用方。

CPP2:template

1、类似java \c#中的泛型

2、template<typename T>;

3、template<typename T,int N>

4、调用时,才产生对应版本的代码COPY;

5、不能过渡使用;

CPP3:c++中的宏:

代码语言:c++
AI代码解释
复制
#include <iostream>
#include <string>

#define Log(x) std::cout << x << std::endl

int main() 
{
    Log(5);
    Log("Hello");
    std::cin.get();
}


\是Enter键的转义

CPP4:C++引用:

1、它是c++的语法糖

2、int a = 5;

int b = 8;

int& ref = a;

此时 ref = 5;它是a的别名;

3、不能修改ref的引用

ref =b,这是不允许的

但可以使用指针方式修改;

代码语言:c++
AI代码解释
复制
int a=5;
int b =8;
int * ref =&a;
(*ref)= 2;

int* p = &b;
(*p) = 1;

此时,a = 2,b =1;

CPP5:c++ dynamic_cast:

1、需要开启RTTI,会增加一定的开销

2、

代码语言:c++
AI代码解释
复制
Player* p0 = dynamic_cast<Player*>(actuallyEnemy);
if(p0)
{
   ...
}

3、转换失败,p0 = null;

4、转换成功,p0= Player的实例;CPP6:

CPP6:c++中的结构化绑定

代码语言:c++
AI代码解释
复制
auto[name,age] = CreatePerson();
std::cout << name << std::endl;

CPP7: c++如何处理OPTIONAL数据

代码语言:c++
AI代码解释
复制
#include <iostream>
#include <fstream>
#include <optional>

std::optional<std::string> ReadFileAsString(const std::string& filePath) 
{
    std::ifstream stream(filePath);
    if (stream)
    {
        std::string result;
        // read file
        stream.close();
        return result;
    }

    return {};
}

int main() 
{
    std::optional<std::string> data = ReadFileAsString("data.txt");

    std::string value = data.value_or("Not present");
    std::cout << value << std::endl;

    if (data.has_value())
    {
        std::cout << "File read sucessfully!\n";
    }
    else 
    {
        std::cout << "File coun't be opened!\n";
    }
    std::cin.get();
}

CPP8:单一类型变量存放多种类型数据

代码语言:c++
AI代码解释
复制
#include <iostream>
#include <variant>

int main() 
{
	std::variant<std::string, int> data;

	std::cout << sizeof(std::string) << "\n";
	std::cout << sizeof(int) << "\n";
	std::cout << sizeof(data) << "\n";
	data = "Brian";
	std::cout << std::get<std::string>(data) << std::endl;
	
    if (auto value = std::get_if<std::string>(&data))
	{
		std::string& v = *value;
		std::cout << v << std::endl;
	}
	else
	{

	}
	data = 2;
	
	std::cout << std::get<int>(data) << std::endl;
	


	std::cin.get();
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C++ Primer Plus习题及答案-第十四章
假设Gloam版本的tell()应显示glip和fb的值,请为这3个Gloam方法提供定义。
艰默
2022/12/12
8540
C++入门-笔记(Cherno视频教程)
尽管 Python 简单易用,但在许多对实时性有较高要求的场景中,仍然需要使用到C++,例如在ROS系统开发、边缘设备部署,仍需依赖 C++。因此,本文主要作为入门和学习C++过程中的笔记博客,也希望对同样想学习C++的同学有所帮助。👓
Vaeeeee
2025/05/08
940
C++入门-笔记(Cherno视频教程)
C++ Primer Plus习题及答案-第十七章
iostream文件定义了用于管理输入和输出的类、常量和操作符,这些对象用于I/O的流和缓冲区。该文件还创建了一些用于处理标准输入输出流的标准对象(如cin、cout、cerr和clog以及对应的宽字符对象)。
艰默
2023/02/26
3.2K0
C++ Primer Plus习题及答案-第十七章
类型转换与IO流:C++世界的变形与交互之道
在现代编程中,C++作为一种强大的面向对象编程语言,其灵活性和高效性在开发中得到了广泛应用。类型转换和输入输出流(IO流)是C++语言的两个重要组成部分。前者是数据处理与操作的桥梁,后者是数据交互的核心。掌握这些内容不仅可以提高代码的健壮性,还能显著提升开发效率与代码可读性。本文将深入探讨C++中的类型转换和IO流机制,助您在实际应用中游刃有余。
suye
2024/12/20
1890
C++ 学习笔记
作者:readywang(王玉龙) template 是 c++ 相当重要的组成部分,堪称 c++语言的一大利器。在大大小小的 c++ 程序中,模板无处不在。c++ templates 作为模板学习的经典书籍,历来被无数 c++学习者所推崇。第二版书籍覆盖了 c++ 11 14 和 17 标准,值得程序猿们精读学习,特此整理学习笔记,将每一部分自认为较为重要的部分逐条陈列,并对少数错误代码进行修改 一、函数模板 1.1 函数模板初探 1.模板实例化时,模板实参必须支持模板中类型对应的所有运算符操作。 te
腾讯技术工程官方号
2022/03/03
6.9K0
C++ template的一些高级用法(元编码,可变参数,仿函数,using使用方法,. C++ 智能指针)
1 .  通用函数可变参数模板      对于有些时候,我们无法确切的知道,函数的参数个数时,而又不想过多的使用所谓的函数重载,那么就可以效仿下面的例子: 1 #include<iostream> 2 #include<Array> 3 void showall() { return; } 4 5 template <typename R1 ,typename... Args> 6 7 void showall(R1 var, Args...args) { 8 9 std:
Gxjun
2018/03/26
5.1K0
C++ template的一些高级用法(元编码,可变参数,仿函数,using使用方法,. C++ 智能指针)
C++ 数据结构和算法入门笔记
世界上的所有事物都可以看做是对象,二对于每个对象,抽想起来均可以分为两个要素,属性和行为。
独元殇
2023/03/14
1.6K0
【C++】自学终极笔记
2. main()函数的返回类型可以是任意的数据类型,而且是唯一一个非void型【 即void main()】可以不用return,因为main()由操作系统直接控制,不能被其他函数调用。
SarPro
2024/02/20
2720
【C++】自学终极笔记
【C++】——入门基础知识超详解
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
小李很执着
2024/06/15
1580
【C++】——入门基础知识超详解
C++-入门语法(五)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/10/28
3380
C++基础知识精髓
例程中声明一个命名空间Test,Test中声明一个结构体Account,而Account中定义变量和声明函数。
Linux兵工厂
2023/02/28
2.1K0
C++基础知识精髓
通过edge://tracing工具进行C++的可视化基准测试
在测试函数类构建一个Timer对象让他开始计时,再离开函数作用时会自动调用析构函数停止计时并且输出耗时结果
晨星成焰
2024/01/29
5872
通过edge://tracing工具进行C++的可视化基准测试
【编程陷阱】编写出色C++代码:遵循的注意事项和最佳实践
按行获取字符串:char *fgets(char *str, int n, FILE *stream);
SarPro
2024/02/20
2040
【编程陷阱】编写出色C++代码:遵循的注意事项和最佳实践
两万字长文,见过最好的模板元编程文章!
链接:https://www.cnblogs.com/liangliangh/p/4219879.html
C语言与CPP编程
2021/07/02
1.5K0
两万字长文,见过最好的模板元编程文章!
C语言到C++的OOP 面向对象编程
1、全面兼容C,C的许多代码不经修改就可以为Cpp所用,用C编写的库函数和实用软件可以用于Cpp。
小林C语言
2020/12/21
3.3K0
C语言到C++的OOP 面向对象编程
C++那些事之玩转optional
本节将会引入5个版本的optional实现,最终揭秘C++ STL optional实现,最后给出一个小项目作为练习的例子,让大家感受step by step学习的乐趣,所有代码、答案与相关参考资料,已更新于知识星球,欢迎大家加入学习。
公众号guangcity
2023/09/02
4210
C++那些事之玩转optional
C++ Primer Plus习题及答案-第十六章
因为string对象提供了自己的内存管理功能,所以不需要再显式定义复制构造函数、析构程序和赋值运算符。
艰默
2023/02/26
1K0
C++ Primer Plus习题及答案-第十六章
C++ 高级语法学习与总结(代码实例)
    C++11增加了许多的特性,auto就是一个很明显的例子。  还有就是typedid()获取数据变量的类型     看下面简短的代码:          atuo: 很像java中的加强for循环....。 1 //获取一个数据变量的类型 2 #include<iostream> 3 #include<stdlib.h> 4 5 int main() { 6 7 double db = 10.9; 8 double *ps = &db; 9 auto v
Gxjun
2018/03/26
2K0
C++ 高级语法学习与总结(代码实例)
C++教程(凯格尔训练法教程)
七种基本的C++数据类型:bool、char、int、float、double、void、wchar_t 类型修饰符:signed、unsigned、short、long 注:一些基本类型可以使用一个或多个类型修饰符进行修饰,比如:signed short int简写为short、signed long int 简写为long。
全栈程序员站长
2022/08/01
3K0
C++教程(凯格尔训练法教程)
【C++100问】一篇文章(16个小例子)带你入门C++的编程世界(基础篇)
文章首发于本人CSDN账号:https://blog.csdn.net/tefuirnever
我是管小亮
2020/04/20
6910
相关推荐
C++ Primer Plus习题及答案-第十四章
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档