c++primer学习笔记(二)

手把手教你用PLECS仿真BUCK数字电源(含DSP代码实现) 本文详细介绍了如何利用PLECS仿真软件与Visual Studio 2022搭建高保真数字电源开发环境,手把手指导从BUCK电路建模、编写硬件感知的C控制算法到参数调优的全过程。重点阐述了通过DLL接口实现软件在环仿真,模拟DSP的ADC/PWM时序,并将验证后的代码无缝迁移至TI C2000系列DSP,构建从仿真到固件的完整数字电源开发闭环,显著提升开发效率与一次成功率。 阅读详情

1.       从const成员函数返回*this

在普通的非const成员函数中,this的类型是一个指向类类型的const指针,可以改变this所指向的值,但不能改变this所保存的地址。在const成员函数中,this的类型是一个指向const类类型的const指针,既不能改变this所指向的对象,也不能改变this所保存的地址。

基于const可以重载成员函数。

2.       可变数据成员使用mutable声明,可以在任何成员函数中改变(包括const)。

3.       没有默认构造函数的类类型,const或引用类型的数据成员,必须在构造函数初始化列表中初始化。成员初始化的顺序就是定义成员的顺序。

4.       类成员声明的查找

类成员定义中的名字查找

5.       c++支持两种初始化:直接初始化和复制初始化,复制初始化使用=符号,直接初始化将初始化式放在圆括号中。

string null_book=”9-9999”;       //复制初始化

string dots(10,’.’);

string empty_copy = string();

string empty_direct;

ifstream file1(“filename”);                 //直接初始化

ifstream file1 = “filename”;                //复制初始化,错误

6.       下标操作符重载

必须定义为类成员函数。类定义下标操作符时,一般需要定义两个版本:一个味非const成员并返回引用,另一个为const成员并返回const引用。

class Foo{

public:

int & operate[](const size_t);

const int& operator[](const size_t) const;

private:

vector<int> data;

};

int & Foo::operate[](const size_t index)

{

         return data[index];

}

const int & Foo::operate[](const size_t index)const

{

         return data[index];

}

 

7.       自增自减操作符重载

class CheckedPtr{

public:

CheckedPtr(int* b,int* e):beg(b),cur(b),end(e){}

CheckedPtr& operator++();

CheckedPtr& operator--();

 

private:

int* beg;

int* end;

int* cur;

};

CheckedPtr& CheckedPtr::operator++()

{

           if(curr == end)

                    throw out_of_range(“increment past of the end of CheckedPtr”);

++cur;

           return *this;

}

CheckedPtr& CheckedPtr::operator--()

{

           if(curr == beg)

                    throw out_of_range(“decrement past of the beginning of CheckedPtr”);

--cur;

           return *this;

}

为了区别操作符的前缀和后缀形式,后缀式操作符函数接受一个额外的int形参,使用后缀式操作符时,编译器提供0作为这个形参的实参。

class CheckedPtr{

public:

CheckedPtr operator++(int);

CheckedPtr operator--(int);

};

为了与内置操作符一致,后缀式操作符应返回旧值(尚未自增自减的值),并且应返回值,而不是引用。

CheckedPtr CheckedPtr::operator++(int)

{

         CheckedPtr ret(*this);

           ++*this;

           return ret;

}

CheckedPtr CheckedPtr::operator--(int)

{

         CheckedPtr ret(*this);

           --*this;

           return ret;

}

 

 

8.       调用操作符和函数对象

struct absInt{

int operator()(int val)

{

return val<0?-val:val;

}

int i=-42;

absInt absObj;

unsigned ui = absObj(i);

函数调用操作符必须定义为成员函数,一个类可以定义调用操作符的多个版本,由形参的树目和类型加以区别。

9.       转换操作符

转换操作符是一种特殊的类成员函数,它定义将类类型值转变为其他类型值的转换。

class SmallInt{

public:

SmallInt(int i=0):val(i)

{

           if(i<0 || i>255)

                    throw out_of_range(“bad smallint init”);

}

operator int() const{ return val;}

private:

std::size_t val;

}

转换函数必须是成员函数,不能指定返回类型,并且形参表必须为空,通常定义为const成员。

MTK_android11_WIFI(内网)和4G(外网)共存 阅读详情

相关推荐

深入解析ST MC SDK(WorkBench)工程结构:从零搭建FOC电机控制项目

本文深入解析了ST MC SDK(WorkBench)工程结构,详细介绍了如何从零搭建FOC电机控制项目。通过ST MC SDK和WorkBench工具链,开发者可以快速配置电机类型、控制策略等参数,生成完整的FOC控制工程。文章还拆解了工程结构中的核心控制模块、HAL硬件抽象层、芯片系统初始化和电机控制算法库,并提供了无传感器FOC实战技巧和常见问题排查指南,帮助开发者高效掌握STM32F407ZGT6开发板上的FOC电机控制技术。

weixin_29173777的博客 411

自增自减操作符的前后缀,下标和解引用操作与自增自减一起使用,还有指针加减法的实现--围绕CheckedPtr类

原例,类 //自增自减操作,前缀后缀,后缀调用前缀来实现,同!=调用== #include"head.h" //用来处理数组 //后面习题14_23起,对类进行完善,找代码去后边 class CheckedPtr{ public: CheckedPtr(int* b, int* e): beg(b), end(e), curr(b) {} public: CheckedPtr&

huqinwei的专栏 3262

多传感器融合SLAM指南:如何结合视觉与激光雷达提升建图精度

本文深入探讨了多传感器融合SLAM技术,详细解析了如何将视觉传感器与激光雷达(特别是3D激光雷达)进行深度融合以提升建图精度与鲁棒性。文章从传感器特性分析、数据同步标定、前端融合策略(松耦合与紧耦合)到后端优化与地图构建,提供了完整的实战指南,并重点介绍了V-LOAM等经典融合框架的核心思想,旨在帮助开发者构建适应复杂动态环境的高精度SLAM系统。

weixin_29056145的博客 535

关于C++primer的疑问

看c++已有半个月了,看到一段代码 checkedptr& checkedptr::operator++(int){ checkedptr ret(*this); ++*this; return ret; } 就用vs2010实现了一下,代码如下 #include using namespace std; class checkedptr{ public: c

hk_1990的专栏 546

Android布局基础与UI设计入门:打造精美应用界面

恭喜你!现在你已经掌握了Android UI开发的基础知识,包括各种布局类型、常用控件的使用以及一些UI优化技巧。这些知识将帮助你设计出既美观又实用的Android应用界面。

m0_65382359的博客 2056

告别CANoe?手把手教你用Python+PCAN搭建汽车诊断脚本(附完整代码)

本文详细介绍了如何利用Python和PCAN硬件搭建高性价比的汽车诊断自动化方案,替代昂贵的CANoe工具。通过开源库python-can和udsoncan实现UDS诊断协议,涵盖硬件选择、环境配置、核心功能实现及性能优化,附完整代码示例,助力开发者快速构建诊断脚本。

weixin_42551227的博客 373

const学习

在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针。可以改变this所指向的值,但不能改变 this所保存的地址。 在 const成员函数中,this的类型是一个指向 const类类型对象的 const指针。既不能改变 this所指向的对象,也不能改变 this所保存的地址。关键字:Const,Const函数,Const变量,函数后面的Const看到const关键字

青箫的博客 293

CPRI原理及应用--基本原理

本文主要介绍CPRI的基本原理,包括CPRI的发展历程、CPRI基本协议、速率、帧结构、时延模型等

u014035968的博客 2万+

this指针及const成员函数

每个成员函数都有一个额外的、隐含的形参将改成员函数与调用该成员函数的类对象绑定在一起。这个而外的形参就是this,在调用成员函数时,形参this初始化为调用函数的对象的地址。 const成员函数的使用: double avg_price() const;该声明就是一个cons

一个菜鸟 1692

【RTD】二分法查找和分段线性插值算法在RTD中应用

二分法查找和分段线性插值算法在RTD中的典型应用。

只要思想不滑坡,想法总比问题多。 2368

骑砍2霸主MOD开发(9)-游戏大地图(MapScene)

Settlement类型由town,castle,castle_village,village,hideout五种类型组成,通过对GameEntity中添加tag实现类型的加载.大地图中军团(MobileParty)的移动速度,AI寻路,食物消耗等均和当前MobileParty所处地形有关,地形统一被定义为TerrainType,类型有森林,荒漠等.MapScene.Read("Main_map", ref sceneInitializationData, "") 装载Main_map大地图。

骑砍战团&霸主MOD开发 1621

自定义自加自减下标解引用等问题--围绕CheckedPtr类 续14.26题

pe14_26_2.cpp//dui 26题的优化 适当的const保护,还有操作符函数的定义顺序最好遵从声明顺序,看起来清晰一点 #include"head.h" //版本二,优化加减法判断问题,我要把加负数的情况直接转化为调用减法,反之相反 //调用相反操作符时传递参数要注意,传入(0 - change)有个转化 class CheckedPtr{ public: CheckedP

huqinwei的专栏 1622

华为OD机试双机位C卷:采购订单 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 采购订单,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,并提供在线OJ模拟做题。华为OD机试真题【采购订单】

qq_45776114的博客 3534

C++ Primer学习笔记(二)

第三章 标准库类型 1.string对象比较操作是区分大小写的,即同一个字符的大小写形式被认为是两个不同的字符; Using namespace std; Using std::cin; 两种using的使用方法; String类型的输入操作符: 读取并忽略开头的所有的空白字符(空格、换行、制表符),读取字符直到再次遇到空白字符。 While(cin>>s)死循环,一...

工大机器人工作室 762

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

《C++ Primer Plus》学习笔记——第二章 初识C++(二)

本篇将介绍语句和函数,这是C++必不可少的部分。 #include &lt;iostream&gt; int main () { using namespace std; int carrots; carrots=25; cout&lt;&lt;"I have"; cout&lt;&lt;carrots; cout&lt;&lt;endl; ...

GM_AMRC的博客 665

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《C++ Primer》学习笔记(二)

这是一篇关于《C++ Primer》学习笔记

2301_76355687的博客 706

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

c++ primer学习笔记(二)

c++读书学习笔记

caswind的博客 2088

《C++ Primer》学习笔记(二):变量和基本类型

专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 https://blog.youkuaiyun.com/TeFuirnever/article/details/100700212 —————————————————————————————————————————————————————— 文章目录专栏C++学习笔记变量和基本类型1、基本内置类型1)算数类型2)类型转换3)字面值常量...

种树最好的时间是10年前,其次是现在!!! 6774

C++ primer学习笔记二

一. 表达式 提升:char bool short 转换为int 左值与右值: 一个对象被用作是右值的时候,用的是对象的值,当被用作左值的时候,用的是对象在内存中的位置。 优先级和结合律: 左结合律:表达式从左往右运算。 优先级高的先组合在一起,优先级相同的按照结合律运算,括号无视优先级和结合律。 赋值运算满足右结合律 求值顺序:最好用括号来强制组合求值顺序。 &&am...

u013551615的博客 171

C++ primer 学习笔记 二

1基于对象设计的类的一般形式: class classname { public: int size() const {     return _size;  };       //_size放在私有的区域内,所以声明一个共有成员的函数,以便访问他的数值 private : int _size ;//声明对象是,用户指定数据的大小,我们需要存储他 int *ia; //实际分

dangyajuan的专栏 433

C++ Primer 学习笔记 (二)

layout: post title: C++ Primer 学习笔记 (二) subtitle: C++ Primer 学习记录 (二) date: 2019-4-25 author: 王鹏程 header-img: img/post-bg-ios10.jpg catalog: true tags: - C++ - 基础编程 2019-4-25 12...

qq_34771252的博客 325

C++ Primer学习笔记(二)

第四章 1.使用声明语句创建数组: typename name[size];size必须是在编译时已知的,即不能是变量:变量的值实在运行的时候设置的。如果不初始化数组,那么数组中的值时不确定的。int total[500]={1}:第一个初始化位1,其余为0; 2.sizeof() 用于数组名返回数组的字节数,用于元素返回元素的字节数。 3.字符串:字符串可以存储在字符数组中,前提是数组最后的一个字符是‘\0’ ...

weixin_43866011的博客 173

C++ Primer 学习笔记二:字符串、向量与数组

C++ Primer 学习笔记二:字符串、向量与数组 本文记录学习C++ Primer第二章的内容。对于一些比较基础的内容略过。 范围for语句 范围for语句是C++11标准引入的for循环。这个语句可以遍历给定序列中的每个元素并执行操作。基本语法形式如下: for (declaration : expression) statement expression部分表示一个序列,declaration定义了一个变量,随着循环依次访问expression中的元素。注意循环内操作过程不能改变expre

weixin_44604025的博客 263

《C++ Primer第五版》学习笔记二

1.类型别名 类型别名是一个名字,它是某种类型的同义词。一个好的类型别名可以让复杂的类型变得易于理解和使用。 定义类型别名的方式有两种: 传统方式:typedef 类型名 类型别名; 新的方式:using 类型别名 = 类型名; 2.auto类型说明符 auto用于让编译器自动推断变量的类型。使用auto定义多个变量时,这些变量必须具有相同的类型。 当一个引用被用作auto定义的变量的初始值时,推断出来的类型与引用对象的值相同。 auto通常会忽略顶层const。 3.decltype类型指示符 dec

王の领土 812

c++ Primer Plus学习笔记(二)

C++确保了 char 足够大,能够存储系统基本字符集中的任何成员,而 wchar_t 则可以存储系统扩展字符集中的任意成员,short 至少为 16位,而 int 至少与 short 一样长,long 至少为 32 位,且至少和 int 一样长。C++的基本类型分为两组:一组由存储为整数的值组成,另一组由存储为浮点格式的值组成。C++使用运算符来提供对数字类型的算术运算: 加、减、乘、除和求模。通过提供各种长度不同、有符号或无符号的类型,C++使程序员能够根据特定的数据要求选择合适的类型。

weixin_46269422的博客 177

C++ Primer学习笔记二

vector<int> a(10,0); for(vector<int>::iterator itor=a.begin();itor!=a.end();itor++) *itor=1; /* *itor can't changed */ for(vector<int>::const_iterator itor=a.begin();i...

weixin_34128501的博客 92
上一篇: vc程序计时器(转)
下一篇: c++primer学习笔记(三)
skilledprogrammer
博客等级 码龄19年 78粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值