C++点滴

ncl泰勒图(均方根误差、标准差、相关系数) 阅读详情
  1. 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则

函数格式:类型标识符(如int)&函数名(参数列表){函数体}
好处:返回的值不用创建副本。
注意事项:
1. 不能返回局部变量的引用。因为局部变量的引用在函数返回时会被销毁,使得引用指向不明,程序进入未知状态。
2. 不能返回函数内部new分配的内存的引用。被函数返回的引用只是一个临时变量,而没有被赋予一个实际变量,那么这个引用所指向的内存没法释放,会造成内存泄漏。
3. 可以返回类成员的引用,但是最好是const。因为类成员一般是封装隐藏的,不能被修改。

1.新特性
bool类型
bool flag=0;

if(flag)
{
    //to do
}
else
{
    //to do
}

2.随用随定义变量
3.C++的I/O方式
cout的语法形式
cout>>x>>endl;(endl相当于C语言中的/n)
cout<<”x+y=”<

namespace A         namespace B
{                   {
    int x=0;                int x=2;
    void fun1();            void fun1();
    void fun2();            void fun3();
}                   }

cout<

int *p=new int [1000];
if(NULL==p)
{
//内存分配失败
}
delete p;           //释放内存
p=NULL;     //将指针p置空

类(类名最好能看出类的功能)

class Dog               //类名(关键字)
{
char name[20];      //数据成员(属性)
int age;
int type;

void shout();           //成员函数(方法)
void run();
};

目的不同抽象出的信息不同。
访问限定符:public,private,protected
class TV
{
public:
char name[20]; //希望暴露出来的
int type;

void changeVol();
void power();
private:
电阻调节; //希望隐藏的
像素配色;
};
对象:具体事物
对象实例化
从栈实例化对象:(引用上面的类TV)
int main()
{
TV tv;
TV tv[20];
return 0;
}
从堆实例化对象:
int main()
{
TV *p=new TV();
TV *q=new TV[20];
//to do something
delete p;
delete []q;
return 0;
}
对象成员访问
单一:
tv.type=0; tv.changeVol(); (栈访问)
p->type=0; p->changeVol(); (堆访问)
数组:
int main()
{
TV *q=new TV[20];
for(i=0;i<20;i++)
{
q[i]->type=0;
q[i]->changeVol();
}
delete []q;
q=NULL;
return 0;
}
操作频繁且复杂的数据类型: char 数组(类型)
string类型

#include<iostream>
#include<string>
using namespace std;
int main()
{
string name=”Zhang san”;
string hobby(“football”);       //将football初始化给hobby:
cout<<name<<hobby<<endl;
return 0;
}
string s1;          //s1为空串
string s2(“abc”)    //s2被初始化为abc
string s3(s2)           //s3初始化为s2的一个副本
string s4(n,’c’)        //s4初始化为n个c

string s=”hello”+”world”;       //这种表达式错误,字符串之间不能直接相接
string s1=”a”+s2;               //合法

封装的好处

class Student
{
public:
void set_age(_age)              //这也称为类内定义
{
if(_age>0&&_age<100)        //通过封装限制了age的设置条件
{
age=_age;
}
else
.....
}
void get_age()
{
return age;
}
private:
string name;
int age;
...
};
class Car
{
public:
get_Wheelcount()            //封装使得这个函数是只读形式
{return Wheelcount;}
private:
int Wheelcount;
};

类内定义与内联函数 类内定义的函数编译器自动定义为内联函数
类外定义
同文件类外定义:

class Car
{
public:
void run();
void stop();
void changespeed();
};

void Car::run(){…};
void Car::stop(){…};
void Car::changespeed(){…};
分文件类外定义:
编写一个头文件Car.h

class Car
{
public:
void run();
void stop();
void changespeed();
};

编写一个源文件Car.cpp

#include”Car.cpp”
void Car::run(){...};
void Car::stop(){...};
void Car::changespeed(){...};

内存分区
栈区 int x=0;int *p=NULL;
堆区 int *p=new int[20];
全局区 存储全局变量和静态变量
常量区 string str=”hello”;
代码区 存储逻辑代码的二进制
对象初始化
构造函数
特点
在对象实例化时被自动调用;构造函数与类同名;构造函数没有返回值;构造函数可以有多个重载形式;实例化对象时仅用到一个构造函数;当用户没有定义构造函数时,编译器自动生成一个构造函数。
无参构造函数

class Student
{
public:
Student()
{m_strName=”jim”;}
private:
string m_strName;
};

有参构造函数

class Student
{
public:
Student(string _name)
{m_strName=_name;}
private:
string m_strName;
};

重载构造函数

class Student
{
public:
Student()
{m_strName=”jim”;}
Student(string _name)
{m_strName=_name;}
private:
string m_strName;
};

初始化列表

class Student
{
public:
Student():m_strName(“Jim”),m_iAge(15){}
private:
m_strName;
m_iAge;
};

初始化列表的特性:初始化列表先于构造函数执行;初始化函数只能用于构造函数;初始化列表可以同时初始化多个数据成员
初始化列表的重要性

class Circle
{
public:
Circle(){m_dpi=3.14}                //错误  因为已经将m_dpi限定了,不能再赋值了
private:
const double m_dpi;
};
class Circle
{
public:
Circle():m_dpi(3.14){}              //正确
private:
const double m_dpi;
};

拷贝构造函数
定义格式:
类名(const 类名&变量名)

class Student
{
public:
Student();
{
m_strName=”Tom”;
}
Student(const Student&stu){...};
private:
string m_strName;
};

如果没有自定义拷贝构造函数,则系统会自动生成一个默认的拷贝构造函数
当采用直接初始化或者复制初始化实例化对象时,系统自动调用拷贝构造函数
拷贝构造函数不能重载
析构函数(释放资源)
定义格式:~类名()

class Student
{
public:
Student() {m_pName=new char[20];}
~Student() {delete []m_pName;}
private:
char *m_pName;
};

如果没有自定义的析构函数,则系统自动生成;
析构函数在对象销毁时自动调用;
析构函数没有返回值和参数,也不能重载
对象的生命历程
1.申请内存->2.初始化列表->3.构造函数->4.参与运算->5.析构函数->6.释放内存
对象数组

class Coordinate
{
public:
int m_iX;
int m_iY;
};
int main()
{
Coordinate coord[3];
coord[1].m_iX=3;
Coordinate *p=new Coordinate[3];
p[0].m_iX=10; p[0]->m_iX=17;
delete []p;
p=NULL;
return 0;
}

对象成员

class Coordinate
{
public:
Coordinate(int x,int y);
private:
int m_iX;
int m_iY;
};
class Line
{
public:
Line(int x1,int y1,int x2,int y2);
private:
Coordinate m_coorA;         //数据类型是Coordinate 
Coordinate m_coorB;
};

Line::Line(int x1,int y1,int x2,int y2):m_coorA(x1,y1),m_coorB(x2,y2)
{
cout<<”Line”<<endl;                         //Line的构造函数
}
int main()
{
Line *p=new Line(2,3,4,5);
delete p;
p=NULL;
return 0;
}

浅拷贝

class Array
{
public:
Array()
{m_iCount=5;}
Array(const Array& arr)
{m_iCount=arr.iCount;}
private:
    int m_iCount;   
};

深拷贝

class Array
{
public:
Array()
{m_iCount=5,m_pArr=new int[m_iCount];}      
Array(const Array& arr)
{m_iCount=arr.m_iCount;
m_pArr=new int[m_iCount];
for(i=0;i<m_iCount;i++)
{m_pArr[i]=arr.m_pArr[i];}}
private:
    int m_iCount;
int *m_pArr;
};

对象指针

class Coordinate
{
Coordinate *p=new Coordinate;
p->m_iX=10;  //(*p).m_iX=10;
p->m_iY=15;  //(*p).m_iY=15;
delete p;
p=NULL;
return 0;
};
18650电池组流体直冷热管理仿真:COMSOL多物理场耦合建模路线与实战策略 在动力电池与储能系统的热管理设计中,多物理场耦合仿真已成为平衡性能与成本的关键工具。液冷方案的换热极限促使行业转向制冷剂直冷技术,而两相流与电池产热的强耦合特性,使得基于COMSOL的数值建模成为评估系统温升与流动分配的重要手段。工程实践中,电化学-热-流场全耦合模型与集总电池-流场简化模型各有适用场景,前者揭示电池内部微观机理,后者则以高计算效率支撑包级方案迭代。通过合理简化几何、标定内阻与熵热系数、设置等效换热边界,仿真能够准确预测直冷系统在快充或大倍率放电下的温度均匀性与压降特性,从而指导流道优化与制 阅读详情

相关推荐

ST7789P3初始化配置

【代码】ST7789P3初始化配置。

zqq_1314的博客 4151

c++点滴

数组名作为函数参数传递时自动退化为指针: int Getsize(int data[]) { return sizeof(data);//得到结果是4:一个指针的大小 }int _main(int argc, _TCHAR * argv[]) { int data1[]={1,2,3,4,5}; int size1=sizeof(data1);//得到2

maxwell1990 333

UI-TARS桌面版模型部署

在 UI-TARS 中配置 VLM(视觉语言模型)模型,无论是选择云端(Hugging Face)还是本地(vLLM)部署,都需要经过一系列步骤,下面为你详细展开介绍。

二琳爱吃肉的博客 4537

Dev-C++使用点滴(我也用这个软件开发)

#1  Dev-C++使用点滴Dev-C++是一个在Windows下用使用gcc编译器的IDE,我目前使用的版本是4.9.8.0版,下载地址为http://www.c-view.org/soft/devcpp/downloads/devcpp4980.exe,可以在它自己的主页http://bloodshed.net/或http://sourceforge.net/projects/dev-cpp

cndeer的专栏 3136

贝塞尔曲线在机器人路径平滑中的实战应用与优化

本文深入探讨了贝塞尔曲线算法在机器人路径平滑中的核心应用。通过对比G1CBS与G2CBS两种方法,详细阐述了如何实现从切线连续到曲率连续的平滑优化,以满足不同机器人对运动平稳性和效率的需求,并提供了完整的Python代码实现与关键参数调优指南。

weixin_29051811的博客 307

Delta并联机械手-Codesys实现以及正解逆解研究

由于Codesys的Robotics模块有Delta并联机械手的运动模型,因此借助Codesys的机械手运动模型,研究自己的正解逆解算法。

weixin_42386991的博客 5561

北邮C++——打点滴

北邮C++——打点滴

weixin_61328708的博客 700

Rockchip RK3568实战:手把手教你调试I2S音频驱动(附ALSA设备树配置详解)

本文提供Rockchip RK3568平台I2S音频驱动的实战调试指南。详细解析了从硬件连接到软件配置的全过程,重点涵盖ALSA驱动框架下的设备树配置、时钟计算、DMA参数设置以及常见问题(如无声、爆音)的排查与解决方法,帮助开发者快速定位并解决音频驱动难题。

weixin_28358083的博客 496

C++重温点滴

C++重温点滴一、缘由工作需要,再次接触C++项目,上次、上上次接触还是2014年上半年和2012年下半年了>_< 有感要记录下这个过程,一方面避免印象逐渐淡化导致日后重复造轮子,另一方面也想做一些分享。二、方向工欲善其事必先利其器。对待问题要将其抽象化、泛化为一般性问题,突出问题的特点后才便于查找解决。三、点滴记录161121WinMain几问: 1. WinMain的特点是? 2.

mapcon的博客 356

【Docker】如何让docker容器正常使用nvidia显卡

描述了如何在docker容器中使用英伟达显卡的过程和问题解决方法。

NameLoadingFailed的博客 8372

WPF用户控件间属性传递的艺术

本文详细介绍了WPF中父控件向子控件传递属性的方法。针对常见的绑定失效问题,重点讲解了使用RelativeSource绑定技术,通过指定AncestorType确保正确访问父控件属性。文章通过实例演示了从ParentModel传递属性到ChildUserControl依赖属性的完整实现过程,包括模型定义、XAML结构设计和代码实现。这种方法有效解决了数据上下文混淆问题,为WPF开发中的控件交互提供了可靠解决方案,有助于提升应用的灵活性和可维护性。

2501_90323865的博客 56

C++ 点滴

****************************************************ch11-类****************************************************1.C++中,结构体是用关键字struct声明的类,默认情况下成员是public的。  类中成员默认是private的。  2.类的定义中的成员函数:规模小,不能使用switch语

IOT物联网小镇 1306

Deep SHAP 深度学习模型的可解释性分析

Deep SHAP 算法是一种用于解释深度学习模型的技术, 该算法通过将每个特征的重要性与输出值相关联来进行解释。本博客对深度学习的模型可解释性进行了分析。

cnjs1994的博客 5119

【学习点滴】cpp遇到的一些疑问和积累

目录 1.虚函数的问题 2.多种构造函数问题 3.全局变量和局部变量重名的问题: 4.有符号数溢出问题 5.自己实现c的字符串库函数 6.栈破坏问题 7.右值引用 移动构造和移动赋值 8.字符串作为hash的key 9.size_type和size_t 10.同步异步、阻塞非阻塞 11.stl::sort的实现 12.线程数应该定为多少比较合适 13.如何判断一个soc...

o小菜的博客 1499

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Dev-C++使用点滴

    Dev-C++是一个在Windows下用使用gcc编译器的IDE,我目前使用的版本是4.9.8.0版,下载地址为http://www.c-view.org/soft/devcpp/downloads/devcpp4980.exe,可以在它自己的主页http://bloodshed.net/或http://sourceforge.net/projects/dev-cpp/中找到关于Dev-C

ninja的专栏 2069

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C++学习点滴1

基于《c++ primier》第三版   1. 基于对象--> 封装    面向对象--> 继承、多态 2. 算法的概念不要局限于某些数学算法(排序、遗传算法之类的),只要是对带求解问题的解决步骤的描述,都可以称为算法。 3. c++最小的程序单元式语句(statement):     声明语句(declaration): 如int i = 0;     赋值语句(assignmen

ydpl2007的专栏 573

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C++学习点滴

1.避免使用指针  2.提倡使用库   3.使用类来表示概念。 本文因为随时更新会比较散,定期会整理下. 一些基础知识: 文件结束 EOF=end of file。 标准库的头文件用 C++把负值赋给unsigned完全是合法的,其结果是对该负数对该类型的取值个数求模后的结果。所以如果把-1赋给8位的unsigned char,那么结果是255. 对于无符号整数

uiiの技术随笔 1223

关于C++的点滴

关于常对象(在定义对象时将对象指定为const,不可更改对象) 1,数据成员的值都不能修改 2,不可调用非const成员函数,因为怕利用这个函数修改成员变量。。。换言之,常对象只能调

chilinnai5463的博客 253

C++ 学习拾遗 —— 点滴记录C++学习过程中遇到的问题以及整理

2013.5.28  delete []str;     今天在看老师课件的时候,看到析构函数里有一条语句:    delete []str;   有印象,但一时想不起来。遂查询了一下。   解释:   delete str1; //释放指针变量的内存   delete [] str1; //释放指针数组的内存(说是指针数组,也不是很准确)   指针数组:

yym951376975的专栏 586

记录我在C++学习中的点点滴滴!

这是我的开始,不是我的结束,年龄不是问题,坚持才重要!自我激励,自我约束,自我发展!

C++学习日记 852

C++语法点滴

这篇文章用于记录一些容易被忽略或鲜为人知的C++语法点 随时更新…… 1.默认参数 在声明一个具有默认参数的函数或方法时,一般的写法如下: void Foo(int iData, bool bFlag = true); 偷懒一点,也可以写成这样: void Foo(int iData, bool = true); 2.拷贝构造函数的形式只有一种,即 X::X(const X&am...

norman_irsa的博客 207

C/CPP点滴积累--C、CPP函数定义的小差别

C语言: fun(    );//表示返回值为int,接受任意参数的函数 int  fun(    );//表示返回值为int,接受任意参数的函数 int  fun( void );表示返回值为int,不接受任何参数的函数 ---------------------------- CPP: fun(  );//不支持这种写法,编译出错 int  fun(  );表示返回值为int,不

u011290087的博客 357

C++编程点滴

有效解决内存泄露  一、你需要一个函数将一个数组赋值为等差数列,并将会在函数的外部使用它。  不合理: int *GetArray( int n screen.width/2)this.width=screen.width/2" vspace="2" border="0" alt=""/>{       int *p = new int[n];       for ( int i = 0; i s

iori_guojun的专栏 837

c++点滴知识总结

1、cout--console output 控制台输出      cin---console  input 控制台输入     endl--end line 结束一行       .\n-----换行   cout   cin>>aa;                输入aa   2、#include 系统自带得    #include "demo.h"    自己写的程序

woshizfs(软件开发)的专栏 589
下一篇: MySQL点滴
Absosba
博客等级 码龄11年 20粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值