四章 札记--C++ primer 之旅

【电力负荷预测】项目介绍 MATLAB实现基于BO-Transformer-LSTM贝叶斯优化算法(BO)优化Transformer-LSTM组合模型进行居民用户多步电力负荷预测(含模型描述及部分示例 内容概要:本文介绍了一个基于BO-Transformer-LSTM的组合模型,用于实现居民用户多步电力负荷预测的完整项目实例。该模型融合Transformer的全局注意力机制与LSTM的局部时序记忆能力,构建能够捕捉长时依赖与周期性特征的深度学习架构,并引入贝叶斯优化(BO)自动搜索最优超参数组合,提升预测精度与训练效率。项目涵盖从原始数据清洗、特征工程、滑动窗口样本构建、模型设计到超参数优化、反归一化及多步误差评估的全流程,强调时间顺序划分以防止信息泄露,并通过周期编码、外生变量融合等方式增强数据表达能力。文中提供了详细的MATLAB代码示例,包括数据预处理、网络搭建、贝叶斯优化配置和预测结果评估等关键步骤。 适合人群:具备一定机器学习和时间序列分析基础,熟悉MATLAB编程环境,从事电力系统预测、智能电网、负荷管理等相关领域的研究人员、工程师及研究生。 使用场景及目标:①应用于居民级或多用户聚合负荷的短期至中期多步预测(如未来24小时);②服务于配电系统运行调度、需求响应基线设定、家庭能源管理系统优化、分布式能源协调控制等实际工程场景;③为科研提供可复现的深度学习+贝叶斯优化的技术路线参考。 阅读建议:此资源以实际项目为导向,建议读者结合提供的代码逐步实现并调试模型,重点关注数据质量控制、时间特征编码、组合网络结构设计与贝叶斯优化稳定性之间的协同关系,在实践中深入理解多步预测中的误差累积机制与超参数敏感性问题。 立即下载
数组的类型 不能是引用。即不存在引用的数组。

数组:
        char s[]="C++";   等价于  char s2[]={'c','+','+','\0'};
          
         数组下标的正确类型是 size_t;


指针: 
     理解指针声明语句时,从右往左阅读。
     EX :string *pstring ;  把 pstring 定义为 指向string 的指针。

有效的指针 的三种状态:
     1)一个特定对象的地址         EX: int ival;  int *pint=&ival;
     2)某个对象后面的另一对象     
     3)0值,不指向任何对象       EX:  int *pint=0;   数值0 或 编译时可获得0值的const 变量     EX : const int c_ival=0;   int *pi=c_ival; 或者是 cstdlib  头文件定义的预处理变量NULL.   int *pi=NULL;

未初始化的指针是无效的,dangerous的。

特殊的指针类型 void * 可以保存任何类型对象的地址。

指向指针的指针: 
     EX: int ival=1024;
             int *pi=&ival;
             int **pi=π

指针 和 数组
     注: 表达式中使用数组名时,自动转换为指向数组第一个元素的指针。

指针的算术操作:
     int ia[10];
     int *ip=ia;          // ip points to ia[0];
     int *ip2=ip+4;     //ip2 points to ia[4];
     
     指针间隔: ip2-ip    结果4   类型是  ptrdiff_t   (标准库类型)


指针和下标:
     int ia[]={0,2,4,6,8};
     int *p=&ia[2];
     int j=p[1] ;           // p[1] = *(p+1);  p[1] = ia[3];
     int k=p[-2];          // p[-2]=*(p-2);    p[-2]=ia[0];

数组的超出末端指针,相当于 vector.end() ; 常用作哨兵。
     EX:  
          const size_t arr_size=5;
          int arr[arr_size];
          int *p=arr;
          int *p2=p+arr_size;
     注:允许计算数组或对象的超出末端的地址,但不可以对此地址进行解引用操作。

指针和 const 
1、 指向const对象的 指针。
      tip: 指向const的指针 自以为指向const 的指针。
       EX: const  double *cptr;     或 double const *cptr;
      不能把一个void * 保存const 对象的地址。必须使用 const  void *
     
     允许把非const 对象的地址 赋给指向const对象的指针。此时则不能通过该指针修改该变量的值

2、const 指针
     指针本身的值不能修改
     EX: int ival=5;
             int *const ptr=&ival;

3、指向const 对象的const 指针
     以上1、2 的并集吧

4、指针 和 typedef
     typedef string *pstring;
     const pstring cstr;
     pstring const cstr;
     解析: pstring 是 指向string 的指针,而const 修饰的是pstring ,所以 cstr 为指向string 的const指针。定义等价于   string  *string  cstr;


注意: 字符串字面值的类型就是const char 的数组。
           EX: const char *cp1 = "a string example";

数组类型的三个重要的限制:
     1) 数组长度固定不变
     2)编译时必须知道其长度
     3)数组只在定义它的块语句内存在

动态数组: 运行时才确定数组长度, 动态数组将一直存在,直到程序显示释放它。
动态数组存放在程序的自由存储区或堆的操作:
C     库函数 malloc 和 free 
C++           new     和 delete

初始化:  1)类类型: 默认构造函数;2) 内置类型,无
可以通过 int *pia = new int[10](); // 元素设置为0,比如const对象的动态数组。

注意: C++ 不允许定义长度为0的数组变量,调用new动态可以创建长度为0的数组是合法的。

动态空间的释放: delete []释放指针所指向的数组空间 注意:[] 告诉指针指向的是数组。必不可少,否则会内存泄露

string.c_str() ; 返回C风格字符串。 返回类型是 const char *

数组初始化vector 对象:
vector<T> ivec(int_arr,int_arr+arr_size); 参数: 数组的第一个元素和最后一个元素的下一个位置的地址


定义指向数组的指针: 声明元素类型、数组变量名字和维数;
EX:
     int ia[3][4];
     int (*ip)[4]=ia;     //  ip 指向 长度为4的int数组
     ip=ia[2];              //   ia[2] 就是长度为4的int数组


int (*ip) [4] 从内向外理解: *ip 是 int[4] 类型 -- 即ip 是指向含有4个元素的数组的指针。

辨析:
     int *ip[4];          // 整型指针的数组,长度为4
     int (*ip) [4];      

用 typedef 简化指向多维数组的指针。
     typedef int  int_array[4];
     int_array  *ip = ia ;   等价于上面的定义





国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

相关推荐

PotPlayer自用皮肤

自用 PotPlayer 皮肤,仅微调了字体大小与颜色,是按个人习惯调整,未做适配性调整。

c++ primer(第四版)学习札记 9-24

1、ex4_22:          const char *cp = "hello";          int cnt;          while (cp) { ++cnt; ++cp; }          while (*cp) { ++cnt; ++cp; }解释两个循环的不同我的理解是第一个循环是判断cp指针是否为空作为循环条件的,而++cp的操作并不会让cp为空,所以循环会持续进

1114

2-shell及常用命令-续.pdf

2-shell及常用命令-续.pdf

aba 回文练习 -- 参考罗大神的

#include #include #include #include using namespace std; #define maxn 1024 #define parr(arr,n) printf(#arr":");for(int kk=0;kk int bufa[maxn],bufb[maxn],bufs[maxn],bufv[maxn]; int sa[m

lsff Code World 6748

物联网技术(AIR780E cat1-4G模块+小程序+腾讯云MQTT)驱动的智能井盖系统设计(连载01)

终端设备采用AIR780E模块作为主控器,电子模块有三轴加速度传感器、可燃气体传感器,AIR780E模块(4G模块)通过MQTT通信协议进行数据打包上传至EMQX服务器,在EMQX服务器中,用户可以自行订阅主题和发布主题,小程序通过MQTT通信协议订阅EMQX服务器的主题,服务器通过接收到硬件发布的数据,转发到微信小程序。

leida_3669的博客 2218

【Collibra 驱动 IPD 数据血缘治理】:三层图谱分层展示体系与全链路追踪的技术业务实践

(应用级/数据级/字段级)是理解复杂数据流动的核心手段。其价值不仅体现在可视化的直观性,更在于通过。技术保障血缘不可篡改性,进一步提升IPD数据治理的可靠性。,解决了跨层级血缘分析的性能与可用性矛盾。数据血缘图谱要素定义(字节跳动/腾讯云/信安标委)实现对IPD数据的精准追踪,而数据血缘图谱的。分层交互设计标准(智慧城市数据中台规范)Collibra技术文档(2024)字段级血缘的挑战与解决路径。自动优化血缘路径,并深化。字段级血缘技术实现方案。Collibra通过。图数据库性能优化原理。

百态·数智思维 | 聚焦大数据、量化与未来AI 1244

kmp 练习下

/* * ===================================================================================== * * Filename: kmp.cpp * * Description: * * Version: 1.0 * Created: 10/14/

lsff Code World 2290

Dify-前端本地运行-单点登录

本文介绍了如何在已部署Dify的系统中实现AI应用跳转及页面定制化改造。通过iframe跳转无法满足甲方需求后,作者对Dify前端源码进行了本地化二次开发,主要步骤包括:1) 按照官方文档搭建本地开发环境;2) 修改.env配置文件连接部署好的后端服务;3) 隐藏侧边栏和头部导航栏;4) 实现单点登录功能,通过URL参数获取用户邮箱自动登录。过程中解决了请求拦截导致的登录校验问题,最终达成仅保留对话框界面并同步用户信息的需求。该方案涉及Next.js框架和React技术的应用,为类似定制化需求提供了参

weixin_43163457的博客 3224

初次邂逅句柄类 --C++ primer

句柄类存储和管理基类指针。 指针所指对象的类型可以变化,既能指向基类类型对象又可以指向派生类类型对象。 用户通过句柄类访问继承层次的操作 (virtual 函数) 设计考虑因素:        1)对任何保存指针的类一样,必须确定对复制控制的具体操作。包装了继承层次的句柄应该表现得像一个智能指针或者像一个值        2)句柄类决定句柄接口屏蔽还是不屏蔽继承层次。 如

lsff Code World 1859

北京联通IPTV组播实战:OpenWRT软路由配置全解析

本文详细解析了在北京联通IPTV环境下,利用OpenWRT软路由和udpxy工具实现组播转单播的实战配置。内容涵盖网络接口设置、防火墙规则、udpxy安装配置、直播源M3U文件处理以及全平台播放指南,帮助用户无需机顶盒即可在家庭局域网内任何设备上流畅观看电视直播。

weixin_29313547的博客 1407

Ansys Circuit新手必看:IBIS模型导入时,Pin Import和Buffer Import到底怎么选?

本文详细解析了Ansys Circuit中IBIS模型导入时Pin Import与Buffer Import的选择策略,帮助SI/PI工程师根据仿真需求做出正确决策。通过对比两种方式的特性差异和应用场景,提供实用的选择指南和性能优化建议,提升信号完整性仿真效率。

weixin_26846533的博客 261

m_sort 归并排序(迭代)

#include #include #include using namespace std; typedef int element; void merge(element *list,element *sorted,int i,int m,int n) { int j=m+1,k=i; while(i if(list[i]  sorted[k++]=l

lsff Code World 1738

基于Qt C++开发一套大疆农业无人机的AI飞控系统

如果需要补充**多机协同作业代码**、**农田测绘数据导出**、**作业数据统计大屏**或**移动端地面站适配**功能,可以告知具体需求,我会针对性完善。"开启" : "关闭") << "喷洒,流量:" << flowRate << "L/min";emit errorOccurred(QString("SDK初始化失败,错误码:%1").arg((int)ret));report += QString("问题区域数量:%1\n").arg(info.problemAreas.size());

寒寒豆豆软件公司的博客 380

十一章 札记--C++ primer 之旅

find 运算: 形参:两个迭代器,检查两个迭代器实参标记范围内的每一个元素。找到与给定值的元素,返回指向该元素的迭代器;如果没匹配元素,这返回第二个形参。 注意: 泛型算法从不执行容器操作,单独依赖迭代器和迭代器操作实现,算法基于迭代器及其操作实现,而并非基于容器操作。 泛型算法     头文件   泛化的算术算法 头文件 只读算法:

lsff Code World 1308

4位无符号比较器设计

4位无符号比较器设计

好好学习,天天向上 7891

IgH EtherCAT 从入门到精通:第 19 章 主站状态机(FSM)深度解析

文章摘要:IgH EtherCAT主站采用多层次有限状态机(FSM)架构实现总线管理。核心是Master FSM,负责总线扫描、从站配置和邮箱通信,通过函数指针状态机模式实现异步非阻塞操作。系统包含多个嵌套FSM:Slave FSM管理单个从站请求,Slave Scan FSM处理拓扑变化扫描,Slave Config FSM配置从站状态转换,Change FSM执行AL状态切换。这种设计通过状态函数指针转换实现复杂协议交互,各FSM协同工作完成EtherCAT网络的初始化、配置和实时通信,支持热插拔和错误

从事嵌入式linux android驱动开发,拥有全栈能力 145

k_over 重叠字符串

#include #include #include #include using namespace std; #define maxn 1024 #define maxm 1024 int bufa[maxn],bufb[maxn],bufs[maxm],bufv[maxn]; int sa[maxn],height[maxn],rank[maxn];

lsff Code World 1207

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

二章 札记 --C++ primer 之旅

实习告一段落,翻开C++primer 准备苦逼的重温C++ 。以下是一些 从书上抄下来的笔记。 测试: -10u 是什么类型? -10u 类型是unsigned int  使用 typeid(-10u).name() 测试的 变量的初始化: 1、复制初始化: int ival=1024; 2、直接初始化: int ival(1024); 直接初始化语法更灵活且效率更高。

lsff Code World 817

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

深度学习工具包 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++ primer 之旅

const 形参:      如果将函数形参定义为非引用的const类型,EX: void fcn(const int i) {};  则不能修改实参的局部副本。   注意:  void fcn(const int i) {}; 和  void fcn(int i) {}; 编译的结果是一样的。 规则: 如果使用引用实参的唯一目的是避免复制实参,则应该将实参定义为const 引用

lsff Code World 752

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C++ new 和 delete 的重载

发现:类里面有几种成员函数是没有this指针的,也就是访问不了类的成员  构造函数:有; 说明其实对象真正的初始化就是在初始化类表  析构函数:有; 析构函数在最后的时刻才把对象空间释放  普通函数:有  static函数: 没有,但能访问静态成员  重载的 new new[]成员函数: 没有, 因为对象的产生是先有空间在调用构造函数,new就是完成前个步骤的工作  重载的 delet

lsff Code World 704

十五章 札记--C++ primer 之旅

C++动态绑定的实现      在C++中,通过基类的引用(或指针)调用虚函数时,发生动态绑定。引用(或指针)既可以指向基类对象也可以指向派生类对象,这是动态绑定的关键。 用引用(或指针)调用的虚函数在运行时确定,被调用的函数是引用(或指针)所指向对象的实际类型所定义的。 虚函数: 除了构造函数外,任意非static 成员函数都可以是虚函数。保留字virtu

lsff Code World 648

十六章 札记--C++ primer 之旅

模板定义: 1、函数模板:             模板定义以关键字 template 开始,后接尖括号括起的模板形参表。                 inline 函数模板, inline 说明符放在模板形参表后面,返回类型之前。     2、定义类模板:            必须以关键字template开头, 后接模板形参类型表。

lsff Code World 645

十四章 札记--C++ primer 之旅

重载运算符:具有特殊名称的函数,operator + 操作符符号 ,具有返回类型和形参表。注意: 重载操作符必须具有至少一个类类型或枚举类型的操作数。大多数重载操作符可以定义为普通非成员函数或类的成员函数。作为类成员的重载函数,形参比操作数数目少1,隐含的this 形参,限定为第一个操作数。规则:一般将算术和关系操作符定义为非成员函数,而将赋值操作符定义为成员操作符重载和友元关系:     操作符

lsff Code World 615

十三章 札记--C++ primer 之旅

复制构造函数:       定义: 一种特殊构造函数,具有单个形参,该形参(常用const修饰)是对该类类型的引用。      调用: 当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用复制构造函数。 当将该类型的对象传递给函数或从函数返回该类型的对象是,将隐式使用复制构造函数。 析构函数:      定义: 析构函数可用于释放对象在构造或在对象的生命期中所获得

lsff Code World 606

八章 札记--C++ primer 之旅

IO 对象 不可复制或赋值 形参或返回类型不能是流类型,可以通过传递或返回指向该对象的指针或引用 来传递和返回IO 对象。 所有流对象都包含一个条件状态成员,类型为iostate 类型 流的状态由 bad , fail ,eof 和 good 操作解释,如果 bad,fail 或者 eof 任意一个为 true ,则检查流本身将显示该流处于错误状态。反之,如果三个

lsff Code World 564

十二章 札记--C++ primer 之旅

类成员: 可以使数据、 函数 或者 类型别名 typedef 定义的 所有成员必须在类的内部声明。 构造函数: 一般使用一个构造函数初始化列表 来初始化对象的数据成员。                 EX: Sales_item() : units_sold(0),  revenue(0.0) {}                 构造函数初始化式只在构造

lsff Code World 546
上一篇: C++ 操作符优先级表  mark一下,方便查阅哈
下一篇: 五六章 札记--C++ primer 之旅
lsff01
博客等级 码龄14年 4粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值