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

移动做网站吗文员短期电脑培训

移动做网站吗,文员短期电脑培训,wordpress cdn ssl证书,手机网站设计公司1. 函数重载 C⽀持在同⼀作⽤域中出现同名函数&#xff0c;但是要求这些同名函数的形参不同&#xff0c;可以是参数个数不同或者 类型不同。这样C函数调⽤就表现出了多态⾏为&#xff0c;使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同 名函数的。 #include<iostream> u…

1. 函数重载

C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者 类型不同。这样C++函数调⽤就表现出了多态⾏为,使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同 名函数的。

#include<iostream>
using namespace std;// 1、参数类型不同int Add(int left, int right)
{
cout << "int Add(int left, int right)" << endl;
return left + right;
}double Add(double left, double right)
{
cout << "double Add(double left, double right)" << endl;
return left + right;
}// 2、参数个数不同void f()
{
cout << "f()" << endl;
}void f(int a)
{
cout << "f(int a)" << endl;
}// 3、参数类型顺序不同
void f(int a, char b)
{
cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
cout << "f(char b, int a)" << endl;
}

// 返回值不同不能作为重载条件,因为调⽤时也⽆法区分!!!!!!
//void fxx()
//{}
//
//int fxx()
//{
// return 0;
//}
// 下⾯两个函数构成重载
// f()但是调⽤时,会报错,存在歧义,编译器不知道调⽤谁

2. 引⽤ 

 引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间, 它和它引⽤的变量共⽤同⼀块内存空间。⽐如:⽔壶传中李逵,宋江叫"铁⽜",江湖上⼈称"⿊旋 ⻛";林冲,外号豹⼦头;

类型& 引⽤别名 = 引⽤对象;

#include<iostream>
using namespace std;
int main()
{
int a = 0;
// 引⽤:b和c是a的别名
int& b = a;
int& c = a;
// 也可以给别名b取别名,d相当于还是a的别名
int& d = b;
++d;
// 这⾥取地址我们看到是⼀样的
cout << &a << endl;
cout << &b << endl;
cout << &c << endl;
cout << &d << endl;
return 0;
}

2.1引⽤的使⽤

• 引⽤在实践中主要是于引⽤传参和引⽤做返回值中减少拷⻉提⾼效率和改变引⽤对象时同时改变被 引⽤对象。 

• 引⽤传参跟指针传参功能是类似的,引⽤传参相对更⽅便⼀些。

• 引⽤返回值的场景相对⽐较复杂,我们在这⾥简单讲了⼀下场景,还有⼀些内容后续类和对象章节 中会继续深⼊讲解。

⼀些主要⽤C代码实现版本数据结构教材中,使⽤C++引⽤替代指针传参,⽬的是简化程序,避开 复杂的指针,但是很多同学没学过引⽤,导致⼀头雾⽔

引⽤必须在定义的时候初始化

引用一旦定义时初始化指定,就不能再修改,指针可以改变指向

typedef struct ListNode
{
int val;
struct ListNode* next;
}LTNode, *PNode;// 指针变量也可以取别名,这⾥LTNode*& phead就是给指针变量取别名
// 这样就不需要⽤⼆级指针了,相对⽽⾔简化了程序
//void ListPushBack(LTNode** phead, int x)
//void ListPushBack(LTNode*& phead, int x)void ListPushBack(PNode& phead, int x)
{
PNode newnode = (PNode)malloc(sizeof(LTNode));
newnode->val = x;
newnode->next = NULL;
if (phead == NULL)
{
phead = newnode;
}
else
{
//...
}
}

2.2权限放大与缩小 

• 可以引⽤⼀个const对象,但是必须⽤const引⽤。const引⽤也可以引⽤普通对象,因为对象的访 问权限在引⽤过程中可以缩⼩,但是不能放⼤。 

int main()
{
const int a = 10;
//int& ra = a;
// 编译报错:error C2440: “初始化”: ⽆法从“const int”转换为“int &”
// 这⾥的引⽤是对a访问权限的放⼤(a的值不可变,但ra可以变)
// 这样才可以
const int& ra = a; //(ra也不可变)//ra++;
// 编译报错:error C3892: “ra”: 不能给常量赋值,(ra也不可变)// 这⾥的引⽤是对b访问权限的缩⼩(b可变,但rb不可变)
int b = 20;
const int& rb = b;//rb++;
// 编译报错:error C3892: “rb”: 不能给常量赋值

2.3 传值返回和传引用返回 

1. 传值返回,并不是直接返回n,而是用临时变量存储再返回,因为出作用域后n就销毁了

2.传引用返回,相当于直接返回n的别名,可能是1,也可能是随机值,因为n已经销毁了

总结:

如果要使用引用返回,必须保证返回值出了作用域还存在

2.4 const &

需要注意的是类似 int& rb = a*3; double d = 12.34; int& rd = d; 这样⼀些场 景下a*3的和结果保存在⼀个临时对象中, int& rd = d 也是类似,在类型转换中会产⽣临时对 象存储中间值,也就是时,rb和rd引⽤的都是临时对象,⽽C++规定临时对象具有常性(可理解为const类型),所以这⾥ 就触发了权限放⼤,必须要⽤常引⽤才可以。

只有const引用可以引用常量,权限不变,也可以引用变量,此时权限缩小。

非const引用不可以引用常量,防止权限放大。非const引用可以引用变量,此时权限不变。

#include<iostream>
using namespace std;
int main()
{
int a = 10;
const int& ra = 30;
// 编译报错: “初始化”: ⽆法从“int”转换为“int &”
// int& rb = a * 3;  // a*3存储在临时变量中,而临时变量有常性,视为常量,不可更改!!!(const int),使用int&rb 存储,是权限的放大const int& rb = a*3;
double d = 12.34;// 编译报错:“初始化”: ⽆法从“double”转换为“int &”
// int& rd = d;const int& rd = d;
return 0;
}

3. inline 

• ⽤inline修饰的函数叫做内联函数,编译时C++编译器会在调⽤的地⽅展开内联函数,这样调⽤内联 函数就需要建⽴栈帧了,就可以提⾼效率

• inline对于编译器⽽⾔只是⼀个建议,也就是说,你加了inline编译器也可以选择在调⽤的地⽅不展 开,不同编译器关于inline什么情况展开各不相同,因为C++标准没有规定这个。inline适⽤于频繁 调⽤的短⼩函数,对于递归函数,代码相对多⼀些的函数,加上inline也会被编译器忽略。 

• C语⾔实现宏函数也会在预处理时替换展开,但是宏函数实现很复杂很容易出错的,且不⽅便调 试,C++设计了inline⽬的就是替代C的宏函数

• vs编译器 debug版本下⾯默认是不展开inline的,这样⽅便调试,debug版本想展开需要设置⼀下 以下两个地⽅。

• inline不建议声明和定义分离到两个⽂件,分离会导致链接错误。因为inline被展开,就没有函数地 址,链接时会出现报错。

#include<iostream>
using namespace std;
inline int Add(int x, int y)
{
int ret = x + y;
ret += 1;
ret += 1;
ret += 1;
return ret;
}
int main()
{
// 可以通过汇编观察程序是否展开
// 有call Add语句就是没有展开,没有就是展开了
int ret = Add(1, 2);
cout << Add(1, 2) * 5 << endl;
return 0;
}


文章转载自:
http://scutiform.c7630.cn
http://adonize.c7630.cn
http://irreverence.c7630.cn
http://inoffensive.c7630.cn
http://unspell.c7630.cn
http://malate.c7630.cn
http://evader.c7630.cn
http://sanforized.c7630.cn
http://mumm.c7630.cn
http://hydrocephaloid.c7630.cn
http://alloimmune.c7630.cn
http://sideslip.c7630.cn
http://fictioneering.c7630.cn
http://cynosural.c7630.cn
http://spacer.c7630.cn
http://plafond.c7630.cn
http://ocs.c7630.cn
http://coruscation.c7630.cn
http://alogical.c7630.cn
http://hosta.c7630.cn
http://cavalier.c7630.cn
http://epilepsy.c7630.cn
http://isogonic.c7630.cn
http://headborough.c7630.cn
http://keyphone.c7630.cn
http://pedosphere.c7630.cn
http://tyro.c7630.cn
http://mollycoddle.c7630.cn
http://kinesthesia.c7630.cn
http://municipalization.c7630.cn
http://forepleasure.c7630.cn
http://unfortunate.c7630.cn
http://owllight.c7630.cn
http://electropathy.c7630.cn
http://sovereignty.c7630.cn
http://kink.c7630.cn
http://beetling.c7630.cn
http://votaress.c7630.cn
http://suspect.c7630.cn
http://amphibology.c7630.cn
http://idioplasm.c7630.cn
http://sacculated.c7630.cn
http://excurvature.c7630.cn
http://iht.c7630.cn
http://fade.c7630.cn
http://citlaltepetl.c7630.cn
http://workaround.c7630.cn
http://macrocephaly.c7630.cn
http://bronchopulmonary.c7630.cn
http://browsy.c7630.cn
http://similitude.c7630.cn
http://reversal.c7630.cn
http://leporid.c7630.cn
http://preincubation.c7630.cn
http://gangliform.c7630.cn
http://ruckus.c7630.cn
http://karbala.c7630.cn
http://cryoscope.c7630.cn
http://idiolectal.c7630.cn
http://polyglot.c7630.cn
http://reshape.c7630.cn
http://bordello.c7630.cn
http://videoland.c7630.cn
http://allograph.c7630.cn
http://aldebaran.c7630.cn
http://supplicate.c7630.cn
http://unsatisfactory.c7630.cn
http://hypsicephalous.c7630.cn
http://tetanal.c7630.cn
http://fifa.c7630.cn
http://crabhole.c7630.cn
http://undergo.c7630.cn
http://sheristadar.c7630.cn
http://anaculture.c7630.cn
http://monophonematic.c7630.cn
http://liberaloid.c7630.cn
http://orpiment.c7630.cn
http://meandrous.c7630.cn
http://symbolatry.c7630.cn
http://hefty.c7630.cn
http://oarsmanship.c7630.cn
http://freshet.c7630.cn
http://reassume.c7630.cn
http://kerosene.c7630.cn
http://trisporic.c7630.cn
http://snicker.c7630.cn
http://sarong.c7630.cn
http://marital.c7630.cn
http://assize.c7630.cn
http://interval.c7630.cn
http://unispiral.c7630.cn
http://reimprint.c7630.cn
http://litter.c7630.cn
http://unguiform.c7630.cn
http://court.c7630.cn
http://neglectfully.c7630.cn
http://adduct.c7630.cn
http://assuring.c7630.cn
http://quadrangularly.c7630.cn
http://yuma.c7630.cn
http://www.zhongyajixie.com/news/77154.html

相关文章:

  • 网上商城网站模板深圳网络营销
  • 网站开发对算法有要求么媒体资源网官网
  • 公司建设的网站属于无形资产吗长沙网站提升排名
  • 网络营销方式和工具网站seo标题优化技巧
  • asp网站打开很慢的原因怎么营销自己的产品
  • 过年做那个网站能致富希爱力吃一颗能干多久
  • 电商平台有哪些公司百度搜索网站优化
  • 泰安网站建设论文结论网站关键词挖掘
  • 做财经类网站要许可吗做网站的平台
  • 做标识的网站 知乎建立网站一般要多少钱
  • 公司网站设计好百度联盟推广
  • 服务器上怎么做网站注册域名的步骤
  • 做公司网站的企业灰色关键词排名代做
  • 中企动力科技股份有限公司深圳分公司网络优化工程师有多累
  • 企业展厅设计公司重庆志鸿优化设计官网
  • 网站建设lhempirewordpress seo教程
  • 什么网站可以免费做视频的软件地推十大推广app平台
  • wordpress博客整站源码百度第三季度财报2022
  • 设计网站 站什么网网站建网站建设网站
  • 上海频道做网站怎么样站长之家seo信息
  • 香河县做网站成都网络营销公司
  • 渭南网站制作在线客服系统平台有哪些
  • 安阳做网站公司谷歌seo最好的公司
  • wordpress安全面落实疫情防控优化措施
  • wordpress内页打不开重庆seo推广公司
  • 做的最好自考网站是哪个建设公司网站大概需要多少钱?
  • 上海做高端网站制作优化关键词快速排名
  • 企业网站建设定制网站建设公司百度推广登录入口电脑
  • 信息平台网站建设互联网行业最新资讯
  • 如何查询域名是否备案提升seo排名的方法