c++11特性速记

华为OD技术面试高频考点(C++篇) 强制子类实现,定义接口规范。- C++11: ~auto / lambda /智能指针/右值引用。-list:双向链表,任意位置增删快(O(1)),访问慢 (0(n)速记关键词:虚函数、RAlI、const、右值引用、智能指针。-vector:动态数组,随机访问快(O(1)),尾部增删。-new/delete:C++运算符,触发构造/析构函数。-malloc/free:C库函数,仅分配/释放内存。-虚函数:基类提供默认实现,子类可覆盖(运行时多态)-C++17:结构化绑定/std::optional。 阅读详情

C++11

C++11 能更好的用于系统开发和库开发,语法更加泛化和简单化,更加稳定和安全,功能强大,提高开发效率。

  • 自定义类型也可以使用初始化列表,扩大了大括号的使用范围。

  • 变量类型推导auto

  • decltype 推导表达式类型作为变量的定义类型

  • final修饰类表示不能被继承,修饰虚函数表示不能被重写

  • override检查是否重写父类的虚函数

  • 默认成员函数控制 =default 显示缺省函数和 =delete 先出默认函数

  • 右值引用,右值可以是数据表达式,如字面值常量、表达式返回值、函数返回值,给右值取别名,需要右值引用一个左值时用move。

  • 完美转发,在函数模板中完全依照模板的参数类型,将参数传递给函数模板中调用的另外一个函数,不产生额外开销。

  • 万能引用,模板中的&&不代表右值引用,而是万能引用,既能接收右值也能接收左值

  • 新的类功能,新增移动构造和移动赋值重载。之前6个默认的功能是构造、析构、拷贝构造、拷贝赋值、取地址重载、const 取地址重载。

  • lamda表达式,[捕捉列表](参数列表)->返回类型{表达式}。

  • nullptr关键字,代替NULL,可隐式转换为任何类型指针和bool,比NULL减少二义性,防止错误。

  • 基于范围的for循环for(auto n:nums){}

  • constexpr 编译期常量类型,在函数及表达式前加上constexpr,让编译器将其视为一个编译期常量。

  • 模板别名,template using mapstring= std::map<T,char*>

  • 追踪返回值类型,返回值类型由auto推导,->decltype() 成为追踪返回类型
    template <Typename T1,Typename T2>
    auto Sum(T2& t1,T2 &t2) ->decltype(t1+t2){
    return t1+t2;
    }

  • 强类型枚举,不会将枚举常量暴露在外层作用域。
    enum class Option{none,one,all}
    Option o=Option::all

  • noexcept修饰符或操作符void except_fun()noexcept; noexcept(常量表达式)

  • static_assert关键字,提供一个编译时期的检查,如为真,什么也不做,如为假,打印特殊的错误信息,相比assert不易误用,无安全风险。

基于 STM32 的全自动洗车监控系统设计与实现 本文提出一种基于 STM32F103RCT6 芯片的全自动洗车监控系统方案,通过多传感器融合与智能控制算法,实现车辆检测、洗车流程自动化及状态远程监控。系统集成硬件选型、电路设计、软件流程及通信功能,可广泛应用于智能洗车场景。 阅读详情

相关推荐

Flutter热更新实战:Shorebird从安装到发布补丁的完整流程(含iOS/Android差异解析)

本文详细介绍了Flutter热更新工具Shorebird的完整使用流程,包括安装、发布补丁及iOS/Android平台差异解析。Shorebird作为Flutter官方未提供的Code Push解决方案,能快速修复线上问题,支持合规性保障和性能优化,特别适合紧急修复场景。文章还涵盖了国内CDN加速配置和最佳实践,帮助开发者高效实现热更新。

butter的博客 1078

C++11 核心特性

【代码】C++11 核心特性。

波风水门的博客 713

AD620仪表放大器模组实战:从调零到信号放大的完整指南

本文详细介绍了AD620仪表放大器模组的实战应用,从调零到信号放大的完整指南。AD620模组以其专业级性能和易用性成为微弱信号放大的首选,集成了AD620芯片、LM358运放和7660电源转换芯片。文章提供了调零技巧、增益设置方法以及单端与差分输入的正确连接方案,并通过心电信号采集和称重传感器等实际案例展示了其广泛应用。

weixin_29290379的博客 376

【C++】多态 | 从概念到底层虚表,小白入门必学

本文系统讲解 C++ 面向对象三大特性之一的多态。文章从多态的通俗理解入手,区分编译时多态与运行时多态;接着给出实现多态的两个必要条件(基类指针/引用 + 虚函数重写),并通过买票、动物叫等经典例子演示完整代码。随后深入虚函数重写的特殊情况(协变、析构函数重写),介绍 C++11 的override与final关键字,并用表格区分重载、重写、隐藏三个易混概念。文章还讲解了纯虚函数与抽象类,最后剖析多态的底层原理——虚函数表(__vfptr),并附上面试考点速记,帮助读者从原理到实战全面掌握 C++ 多态。

2301_82161965的博客 333

基于PTB-XL数据集的深度学习心电信号分类

心电信号的分析与处理是心血管疾病诊断的重要手段。该领域的主要工作领域是分类,它越来越多地得到基于机器学习的算法的支持。在这项工作中,开发了一个深度神经网络来自动分类初级心电信号。这项研究是在PTB-XL数据库中包含的数据上进行的。提出了三种神经网络架构:第一种基于卷积网络,第二种基于SincNet,第三种基于卷积网络,

weixin_55121617的博客 7007

通过轻量级图像增强Transformer (IAT) 提升YOLOv8在低光环境下的检测性能

随着深度学习和计算机视觉的快速发展,目标检测模型在各个领域中的应用不断扩展,特别是在低照度环境下的视觉任务。YOLOv8作为当前最先进的目标检测模型之一,在高亮度和良好照明条件下表现出色,但在低照度环境下的性能存在一定的不足。为了解决这一问题,我们提出了一种轻量级的低照度图像增强网络(IAT)来改进YOLOv8的暗光检测能力。本篇文章将深入探讨这一创新改进,并附带代码实现,帮助大家更好地理解这一技术的应用和效果。

博客 1214

C++11——新特性超详细总结

18. 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$17. 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

m0_65635427的博客 7635

含分布式电源的配电网三段式电流保护影响仿真研究

文章摘要 本文研究了分布式电源(DG)接入对配电网三段式电流保护的影响。通过在Matlab/Simulink平台搭建含同步发电机型DG的10kV配电网模型,设计了基于傅里叶算法的三段式电流保护模块(I段瞬时速断、II段限时速断、III段定时限过流)。研究分析了不同DG接入位置、容量及故障点对保护系统的影响机理。仿真结果表明,DG接入会改变故障电流特性,可能导致三种典型问题:保护范围扩大引起误动、保护灵敏度下降导致拒动,以及保护选择性丧失。该研究为含DG配电网的保护配置与整定提供了理论依据和仿真参考,对保障分

huanghm88的专栏 268

【C++11新特性】

本文摘要了C++11核心特性:1)类型推导(auto/decltype)简化变量声明;2)序列for循环遍历容器;3)lambda表达式用于创建匿名函数;4)构造函数(委托/继承)优化对象初始化;5)新型容器(array固定数组/forward_list单向链表);6)垃圾回收机制原理及替代方案;7)正则表达式基本语法。这些特性提升了代码简洁性和运行效率,其中lambda和容器改进对STL应用影响显著。

2201_75475240的博客 1271

SIWAVE+ADS提取PCB走线寄生参数

本文将介绍一种很适合PCB走线提取寄生电感等参数的方法,即是通过SIWAVE将PCB走线的S参数提取出来,再通过ADS将S参数转换成电感、电容值。

sinat_15150363的博客 1765

Jetson Orin 上拉取 GMSL 相机流并保存在 DMA 内存中

本文介绍了在NVIDIA Jetson Orin平台上实现GMSL相机DMA内存共享的低延迟采集方案。通过V4L2+NvBufSurface技术,将相机数据直接存入DMA缓冲区,避免传统流程中的CPU拷贝开销。文章详细说明了设备初始化、DMA缓冲区分配、V4L2绑定等关键步骤,并展示了调用示例。该方案支持零拷贝访问,适用于AI推理、硬件编码等场景,能显著提升车载视觉系统的实时性能,为多路GMSL相机接入和低延迟处理提供了高效解决方案。

J。 695

C++STL语法速记

笔者最近开始重刷算法题,鉴于C++语法的便利,笔者决定简单学习其语法用作写算法题的一个工具,这里不会涉及有关C++底层的内容,大多是一些容器的语法记录。

qq_73106050的博客 800

初学者入门YOLO目标检测:从懵圈到上手,这篇文章讲透所有核心(附学习路径+避坑指南)

目标:比如训练一个“检测苹果和橘子”的模型,或者“检测人脸”的模型;任务:学会用LabelImg标注数据,制作YOLO格式的数据集,用命令行训练模型;关键:不用追求高精度,能训练出一个能检测出目标的模型就行。很多初学者卡在入门阶段,不是因为智商不够,而是因为“想太多,做太少”——总觉得要把所有原理搞懂才能动手,结果越想越怕,最后放弃。先动手,再动脑。先跑通一个案例,获得成就感;再制作自定义数据集,训练简单模型;最后再回头去理解原理,优化模型。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 688

C++ Primer Plus(速记版)-高级主题

命名空间的定义与作用定义:命名空间是一个作用域,用于封装一组相关的名字(如类名、函数名等),以避免全局命名冲突。语法:以namespace关键字开始,后跟命名空间名称和一对花括号{},其中包含命名空间的成员声明。避免命名冲突问题:在复杂程序中,尤其是使用多个独立开发的库时,全局作用域中的名字很容易发生冲突。解决方案:使用命名空间将不同库或模块中的名字封装起来,从而避免冲突。使用命名空间中的成员直接访问:使用命名空间名::成员名的形式直接访问。简化访问:使用using。

荒野 1296

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C++概念速记

面向过程: endl对比\n的区别:会刷新缓冲区 C++有面向对象开发的四大特性:封装,抽象,继承,多态 注释:// /* */ 类型&关键字:布尔型bool 字符型char 整型int 浮点型float 双浮点型double 无类型void 变量作用域:在函数或一个代码块内部声明的变量,称为局部变量,只在函数或块内适用 在函数参数的定义中声明的变量,称为形...

cj1064789374的博客 359

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

c++面试高频题-速记版

内存地址对齐 // 64位系统 struct T{ int a; //0-3 char ch; //4 int b; // 8-11 long c; // 16-23 char chs[12]; //24-35 }; // 总共占据40bytes Linux的虚拟内存、物理内存。 -虚拟内存是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。它有4个重要的能力: 它将主存看成是一个存储在

小x的博客 2210

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

现代 C++ 的最佳实践与新特性探索(C++20 / C++23)

现代 C++ 的演进极大提升了开发效率与代码质量。关注新标准、实践最佳方案,是每位 C++ 开发者的必修课。推荐持续关注ISO C++和。参考书籍Nicolai M. Josuttis 《C++标准库》速记口:用新语法、重类型安全、优先标准库、持续学习,现代 C++ 更高效!

IT技术学习与工作笔记分享 1036

std::array 学习速记

简介 std::array 是一个封装了固定大小的数组的容器。 它和有且仅有一个C风格的T[N]数组作为非static成员的struct语义上是一样的。 它把标准容器的好处(比如知道自己的大小,支持赋值操作符,随机访问迭代器… ) 和C风格数组的高效率、易访问结合。除了初始化array的时候不是空的以及swap操作是线性复杂度外, std::array 满足容器和可逆容器的要求。 有一种特殊的arr

郭立东的个人博客 1304

C++ primer plus 第四章 复合类型 遗忘点速记

C++ primer plus 第四章 复合类型 遗忘点速记 数组 sizeof()用在数组名可以返回整个数组的字节数。 数组如果显式进行初始化,如 int cards[4] = {1,2}; 则所有元素都被初始化,但只有前两个分别被指定为1,2,其它初始化为0;也就是说,显示初始化数组的时候,所有元素都被初始化,若指定了k个值,则数组前k个元素按指定的值进行初始化,其它都初始化为0;所以数组初始化为全0只需要将第一个初始化为0即可: int cards[4] = {0}; 方括号内的数字在初始化

read, note and comment papers 232

【Effective Modern C++】第3章 转向现代C++

【Effective Modern C++】第3章 转向现代C++ 条款7:在创建对象时注意区分()和{} 要点速记 条款8:优先选用nullptr,而非0或NULL 要点速记 条款9:优先选用别名声明,而非typedef 要点速记 条款10:优先选用限定作用域的枚举类型,而非不限作用域的枚举类型 要点速记 条款11:优先选用删除函数,而非private未定义函数 要点速记 条款12:为意在改写的函数添加override声明 要点速记 条款13:优先选用const_iterator,而非iterator

jokerMingge的博客 900

2026最新最全C/C++面试、C++八股文(附带免费下载链接)

程序员面试拼的不是「刷了多少题」,而是「有没有把知识点吃透,能不能精准答到面试官心坎里」。这套《代码随想录》最强八股文系列,就是帮你把面试考点系统化、标准化的神器,不管是应届生找第一份工作,还是在职跳槽冲大厂,都能帮你大幅提升备考效率,顺利拿到心仪 offer!如果你也在备战面试,不妨试试这套资料,把零散的知识点串成体系,面试再也不慌~

2501_93359789的博客 2512

C/C++ 拷贝构造函数特性与用法分析,以及与 Java 的区别

拷贝构造函数是 C/C++ 中面向对象编程的重要机制之一。它在对象被复制时自动调用,保证对象的成员变量正确地被复制。与 Java 的对象复制机制有本质区别,C++ 允许开发者自定义拷贝方式,实现深拷贝或浅拷贝。public:// 拷贝构造函数声明C++ 拷贝构造函数是对象复制的核心,支持深/浅拷贝,决定资源管理策略。Java 拷贝靠clone(),不推荐自定义拷贝构造函数,复制语义不一致,易出错。C++ 强调资源所有权和生命周期管理,Java 强调对象引用和垃圾回收。

IT技术学习与工作笔记分享 854

草稿没写完【C++八股总结】【基础】【内存管理】

C++ 中变量的区分需结合 作用域(可见范围)、生命周期(存在时长)、内存分布、初始化规则 分析,核心类型包括 局部变量、全局变量、静态局部变量、静态全局变量(后两者合称「静态变量」,由 static 修饰改变特性)。全局变量的“跨文件访问”是有条件的: 必须在其他文件用 声明,否则默认只在当前文件可见? 不! 全局变量默认是外部链接(跨文件可共享),静态全局才是内部链接(仅当前文件)。原速记的“全局变量支持跨文件访问”是对的,但需明确是“默认外部链接”。初始化的本质差异: 局部变量默认是“未初始化”(垃

weixin_47868976的博客 623

【现代C++】析构函数深度指南:默认/虚析构/异常规范与最佳实践(C++11–23)

/ 纯虚析构IFace::~IFace() {} // 仍需提供定义(链接期需要)// 纯虚inline IFace::~IFace() {} // 仍需定义。

人心有反复,好在山水有重逢。 2118

面试宝典(五):现代 C++ 特性与模板

答:处于"有效但未指定(valid but unspecified)"状态——可以析构或赋值,但不应再使用其值(除非重新赋值)。右值引用与 move 让值传递不再昂贵,模板与 concepts 把"编译期计算与约束"变成日常工具,lambda 与。高级工程师的标志,是不仅能用这些特性,还能讲清它们背后的类型系统与编译期机制——这正是本篇的考察重心。move 是"偷"资源(转移指针)而非复制,代价 O(1)。函数既可在编译期(参数都是常量时)求值,也可在运行期当普通函数用——它不强制编译期。

weixin_42388661的博客 109

现代 C++ 的最佳实践与 AI 时代的角色

现代 C++ 通过引入智能指针、自动类型推断、并发库、标准算法和容器等特性,极大地提升了开发效率和代码安全性。在 AI 领域,C++ 由于其高性能和良好的硬件控制能力,成为许多深度学习框架(如 TensorFlow、PyTorch 的底层模块)和高性能推理引擎(如 ONNX Runtime、TensorRT)的首选实现语言。现代 C++ 的最佳实践为 AI 时代的高性能系统开发提供了坚实基础。通过 RAII、智能指针、并发库、模板元编程等现代特性,开发者可编写出安全、高效、可维护的代码。

IT技术学习与工作笔记分享 851
上一篇: c++ 一些常识 2
下一篇: 【linux服务器编程学习】9、多进程编程
Sweler*19
博客等级 码龄7年 65粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值