• C++中方法定义和调用需要注意的一个地方


    最近开始认真地再学一下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;
    }

    #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;
    }

    结果会怎么样?答案是无法通过编译

    image

    但是,如何解决这样的问题呢?答案是可以为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;
    }

  • 相关阅读:
    PB调用.NET类库详解
    一个游标的性能问题
    WCF实例与并发的一些测试
    PB调用.NET代码的两个入口函数
    SQL数据库表防JS木马注入
    Atitit 收入理论大总结 4位一体 4象限理论 财政收入理论 6位一体
    Atitit 融资 之道 圈钱之道 attilax总结
    Atitit 组织架构的如何划分 划分方法attilax大总结
    Atitit 每个人都应该实施的互联网金融战略 attilax总结
    Atitit 研发组织与个人如何gdp计算法 attilax总结
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1496626.html
Copyright © 2020-2023  润新知