C++中要领界说和挪用需要留意的一个处所
当前位置:以往代写 > C/C++ 教程 >C++中要领界说和挪用需要留意的一个处所
2019-06-13

C++中要领界说和挪用需要留意的一个处所

C++中要领界说和挪用需要留意的一个处所

副标题#e#

最近开始当真地再学一下C++的编程,连续会有一些条记整理出来。

本日要讲的是,C++措施中,要领之间挪用的一个需要留意的处所

譬喻,我们有一个要领

int maxvalue(int a,int b,int c)
{
if(a<b) a=b;
if(a<c) a=c;
return a;
}

我们需要在别的一个要领内里挪用它

int main()
{

int a=5,b=8,c=10;
cout<< maxvalue(a,b,c);
return 0;
}

那么请留意了,maxvalue要领是必需界说在main要领之前的,而不能在后头。

下面的代码能编译通过

#include <iostream>
using namespace std;
int maxvalue(int a,int b,int c)
{
if(a<b) a=b;
if(a<c) a=c;
return a;
}

int main()
{

int a=5,b=8,c=10;
cout<< maxvalue(a,b,c);
return 0;
}

而下面的代码则会呈现编译错误

#include <iostream>
using namespace std;

int main()
{

int a=5,b=8,c=10;
cout<< maxvalue(a,b,c);
return 0;
}

int maxvalue(int a,int b,int c)
{
if(a<b) a=b;
if(a<c) a=c;
return a;
}

虽然,也可以将该要领单独界说在一个头文件中,然后Include进来,这个机制与ASP内里是一样的

我们先将如下代码界说为common.h文件

int maxvalue(int a,int b,int c)
{
if(a<b) a=b;
if(a<c) a=c;
return a;
}

然后修改原先的代码文件

#include <iostream>
#include "common.h"

using namespace std;

int main()
{

int a=5,b=8,c=10;
cout<< maxvalue(a,b,c);
return 0;
}


#p#副标题#e#

include这个指令其实就相当于是将common.h的内容插入到当前cpp文件的顶部。

那么,为什么同样是include,但有两种写法呢?

#include <iostream>

#include "common.h"

原因在于,第一个iostream是所谓的尺度库(必需用<>包括),而第二个common.h是自界说库(必需用双引号包括)

尚有一个问题,假如此时我们的挪用方也界说了一个maxvalue要领呢

#include <iostream>
#include "common.h"
using namespace std;
int maxvalue(int a,int b,int c)
{
return c;
}
int main()
{

int a=5,b=8,c=10;
cout<< maxvalue(a,b,c);
return 0;
}

功效会怎么样?谜底是无法通过编译

C++中方式定义和调用需要寄望的一个地方

可是,如何办理这样的问题呢?谜底是可觉得common.h界说一个定名空间,如下

namespace common{
int maxvalue(int a,int b,int c)
{
if(a<b) a=b;
if(a<c) a=c;
return a;
}
}

这样的话,就可以通过下面的方法来挪用该要领呢

#include <iostream>
#include "common.h"

using namespace std;//这是导入定名空间的语法,与C#是纷歧样的,多了一个非凡的namespace要害字

int maxvalue(int a,int b,int c)
{
return c;
}

int main()
{

int a=5,b=8,c=10;
cout<< common::maxvalue(a,b,c);//挪用common.h中的maxvalue要领,用两个冒号暗示定名空间限定符,这与C#也纷歧样
cout << endl;
cout << maxvalue(a,b,c);//这是挪用本身界说的maxvalue要领
return 0;
}

    关键字:

在线提交作业