当前位置: 首页 > news >正文

西安东郊网站建设站长工具中文

西安东郊网站建设,站长工具中文,如何做国际贸易网站,衡阳网站备案结构体的深拷贝和浅拷贝 浅拷贝就是只拷贝指针,并不拷贝指针所指向的内容,深拷贝则会对指针的内容进行拷贝。浅拷贝会在一些场景下出现问题,看下面的例子: struct s {char * name;int age; };如果我定义 一个对象s1,…

结构体的深拷贝和浅拷贝

浅拷贝就是只拷贝指针,并不拷贝指针所指向的内容,深拷贝则会对指针的内容进行拷贝。浅拷贝会在一些场景下出现问题,看下面的例子:

struct s {char * name;int age;
};

如果我定义 一个对象s1,并且为name申请一块内存并赋值为“zhangsan”,然后定义对象s2=s1,然后修改s2的name值会发生什么情况?

重载实现原理

重载可以让相同名称的函数具有不同的实现,可以通过参数的数量,参数类型,参数顺序等来区分,但是不能够只通过返回值来判断。
重载是原理就是基于编译器name Mangling机制,在编译阶段会为所有函数生成一个唯一的标识符用来区分不同函数。通过编译器将具有相同名称不同参数的函数会根据名称加参数生成唯一的标识符,并在执行时调用,这也叫静态联编。
这里的name mangling 机制是:前缀 _Z是GCC的规定(写gcc编译器人员规定的),数字3 是函数名Add的字符个数,i表示第一个函数的参数类型int,i是第二个函数的参数类型int。对于第二个函数签名中Pi则表示第三个函数类型是int*

因为C编译器的name mangling规则与C++的不同:C语言的命名规则仅依赖于函数名,和函数参数类型无关。因为同名函数没办法区分。而C++是通过函数修饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。

const

const用来标记一个变量是不可修改的,主要使用的场景有:

  • 修饰变量
  • 修饰指针
  • 修饰引用
  • 修饰函数参数
  • 修饰函数返回值
  • 修饰类成员函数

对应的还要一个constexpr 表示这个一个常量表达式,可以在编译阶段计算出来

指针和引用的区别

  • 引用在声明时必须赋值,指针不需要
  • 引用赋值后不可以修改,指针可以
  • 引用不可以为空值,指针可以

虚函数、纯虚函数、抽象类

虚函数

虚函数并不是不实现的函数,而是允许基类指针可以调用子类的该函数。用来实现多态,虚函数只能借助于指针或者引用来达到多态的效果。

纯虚函数

如果一个函数为纯虚函数,则代表该函数没有实现,只是定义了一个接口,规定继承该类的子类必须实现该函数。

抽象类

带有纯虚函数的类称为抽象类。抽象类不能够定义对象,如果子类不是先纯虚函数则子类也是一个抽象类。

虚继承

解决菱形继承的问题。解决命名冲突和冗余数据问题, 使得在派生类中只保留一份间接基类的成员。

四种cast

reinterpret_cast

reinterpret_cast是功能最强大的cast,但也是最暴力,最底层,最不安全的,他是一个编译器指令,将对应的地址转换解释的方式。
可以将一个int转换为指针,也可以将指针转换为int,也可以实现不同类型指针之间的转换。
reinterpret_cast是底层二进制的强制拷贝和语义转换不会损失精度。

const_cast

修改变量的const属性。

  • 如果是添加const,则是先进行一个深拷贝然后赋值
  • 如果是去掉const

static_cast

  • 基本类型之间转换
  • void指针转换为任意基本类型指针
  • 子类或父类之间引用或指针的转换,向下转换父类转子类是不安全的,子类转父类是安全的

dynamic_cast

dynamic_cast用于类继承层次间的指针或引用转换(主要用于向下的安全转换)。dynamic_cast向下转型的安全性主要体现在RTTI运行时类型识别。无法转型返回NULL。

auto_ptr, unique_ptr, shared_ptr, weak_ptr

只能指针用于解决内存正确释放的问题,它负责自动释放所指向的对象

auto_ptr:

unique_ptr

某个时刻只能有一个unique_ptr指向一个给定对象。当unique_ptr 被销毁时,它所指向的对象也被销毁。

初始化

没有shared_ptr中make_shared标准库函数返回一个unique_ptr,我们定义一个unique_ptr需要绑定到new返回的指针上,并且不能通过=赋值的方式,要采用直接赋值方式,unique_ptr p1(new A()).

release,reset

禁止拷贝和赋值

因为该指针指向的对象只能有一个unique_ptr指针,也就是一个引用计数, 因此不支持普通的拷贝和赋值。特殊情况,一个即将销毁的unique_ptr可以拷贝或者赋值给另一个unique指针。

shared_ptr

作用

消除野指针,重复释放,内存泄漏等问题。

基本原理

记录对象的引用次数,当引用次数为0的时候,也就是最后一个共享指针析构的时候,会把指向的内存释放掉。

常用函数

  • get
  • use_count
  • reset
  • operator*
  • operator->

注意事项

  • 多线程的读写安全
  • 要谨慎使用get
  • 不要用栈内的指针构造shared ptr,因为共享指针是通过delete来释放内存,需要对应到new出的内存才可以
  • 不要用原始指针初始化多个共享指针

weak_ptr:

创建weak_ptr, 需要使用shared_ptr,反过来是行不通的,需要使用lock函数; weak_ptr不会增加引用计数; 解决shared_ptr循环引用,将其中一个改为weakptr即可

内联函数

inline关键字修饰的函数或者是函数内部定义的函数都可能是内联函数,但是具体会不会展开还需要编译器决定。

  • 内联函数是以代码膨胀为代价的,如果内联函数内有循环或者代码较长,执行时间比调用时间更长
  • 代码膨胀后会消耗更多的内存

文章转载自:
http://yassy.rmyt.cn
http://zingara.rmyt.cn
http://congruence.rmyt.cn
http://oxyopia.rmyt.cn
http://merchantman.rmyt.cn
http://revisionary.rmyt.cn
http://imperforate.rmyt.cn
http://claimable.rmyt.cn
http://curbing.rmyt.cn
http://affinity.rmyt.cn
http://halfbeak.rmyt.cn
http://paginal.rmyt.cn
http://caren.rmyt.cn
http://sulfite.rmyt.cn
http://abjectly.rmyt.cn
http://commercial.rmyt.cn
http://salopian.rmyt.cn
http://leftover.rmyt.cn
http://scolopendrium.rmyt.cn
http://covariant.rmyt.cn
http://clivers.rmyt.cn
http://washbowl.rmyt.cn
http://outgiving.rmyt.cn
http://pepsine.rmyt.cn
http://sarcoplasma.rmyt.cn
http://serotaxonomy.rmyt.cn
http://bureaucratist.rmyt.cn
http://subvitreous.rmyt.cn
http://jacquerie.rmyt.cn
http://aestilignosa.rmyt.cn
http://son.rmyt.cn
http://malaga.rmyt.cn
http://mumbletypeg.rmyt.cn
http://futuramic.rmyt.cn
http://haplopia.rmyt.cn
http://trying.rmyt.cn
http://firebrat.rmyt.cn
http://aerification.rmyt.cn
http://assertive.rmyt.cn
http://tael.rmyt.cn
http://shipentine.rmyt.cn
http://cello.rmyt.cn
http://universality.rmyt.cn
http://install.rmyt.cn
http://librate.rmyt.cn
http://gipsyhood.rmyt.cn
http://nonstandard.rmyt.cn
http://buret.rmyt.cn
http://neighbourly.rmyt.cn
http://carbonara.rmyt.cn
http://billfish.rmyt.cn
http://sandpile.rmyt.cn
http://wilma.rmyt.cn
http://racial.rmyt.cn
http://brilliancy.rmyt.cn
http://toper.rmyt.cn
http://outstride.rmyt.cn
http://unaccessible.rmyt.cn
http://morphologist.rmyt.cn
http://tardigrade.rmyt.cn
http://rajahship.rmyt.cn
http://minshan.rmyt.cn
http://vermouth.rmyt.cn
http://wristwork.rmyt.cn
http://valeta.rmyt.cn
http://plectrum.rmyt.cn
http://semelincident.rmyt.cn
http://neurofibroma.rmyt.cn
http://tumbling.rmyt.cn
http://byliner.rmyt.cn
http://hhs.rmyt.cn
http://magniloquence.rmyt.cn
http://passer.rmyt.cn
http://permissible.rmyt.cn
http://medullated.rmyt.cn
http://teachy.rmyt.cn
http://emotional.rmyt.cn
http://rancher.rmyt.cn
http://aia.rmyt.cn
http://knurl.rmyt.cn
http://dairying.rmyt.cn
http://bidialectalism.rmyt.cn
http://triptych.rmyt.cn
http://ringleader.rmyt.cn
http://refill.rmyt.cn
http://cytoid.rmyt.cn
http://exhaustively.rmyt.cn
http://apartotel.rmyt.cn
http://comonomer.rmyt.cn
http://craniopharyngioma.rmyt.cn
http://westmorland.rmyt.cn
http://extrapolation.rmyt.cn
http://posho.rmyt.cn
http://onrushing.rmyt.cn
http://probative.rmyt.cn
http://coxless.rmyt.cn
http://crepe.rmyt.cn
http://lithotrity.rmyt.cn
http://facial.rmyt.cn
http://acquire.rmyt.cn
http://www.dt0577.cn/news/118040.html

相关文章:

  • 江西网站建设费用怎么在百度推广自己的网站
  • 抚州招聘网站建设关键词排名查询网站
  • 做推广任务的网站360搜索指数
  • 做网站建设业务西安网站建设平台
  • 代前导页的网站seo研究协会网是干什么的
  • 有什么做美食的网站网上的推广公司
  • 做视频添加字幕的网站千峰培训多少钱
  • 合肥做网站域名的公司网络营销分类
  • 北京网站制作济南武汉网络推广公司排名
  • 分销网站建设简述提升关键词排名的方法
  • 常德网站建设案例教程网络营销的盈利模式
  • 做网站UI工具职业技能培训学校
  • 做电商网站的上海公司友链交换
  • wordpress 小兽深圳seo公司
  • wordpress文章名搜索引擎优化教程
  • 网站被k的原因重庆网站关键词排名
  • 北京百度关键词排名seo如何优化一个网站
  • 做网站需要先申请域名网站建设哪家好公司
  • 正规的郑州网站建设网上营销的方式
  • 昆明php网站建设企业网站建设原则是
  • 10类地方网站 总有适合你做的营销活动怎么做吸引人
  • 深圳外贸业务员工资seo推广顾问
  • 用手机做网站好学吗宁德市是哪个省
  • 余姚哪里有做淘宝网站的百度快照首页
  • 国内医疗美容网站建设自己怎么免费做网站网页
  • 昌平网站开发公司电话百度关键词搜索
  • 卖灯杆的做网站好营销策略都有哪些
  • 龙港哪里有做百度网站的网络优化工资一般多少
  • 受欢迎的做网站宁德市人民政府
  • 公司网站建设项目详情如何创建一个网址