精华内容
下载资源
问答
  • C++函数声明不兼容

    千次阅读 2019-04-01 21:22:01
    很大可能是重复声明或者头文件包含有错误

    很大可能是重复声明或者头文件包含有错误

    展开全文
  • C++函数声明后面加throw()的作用!

    千次阅读 2016-12-20 15:49:51
    C++里面为什么有时候在函数声明的时候在后面加throw()关键字? 解释: C++函数后面加关键字throw(something)限制,是对这个函数的异常安全作出限制;这是一种异常规范,只会出现在声明函数时,表示这个函数...


    问题描述:

    C++里面为什么有时候在函数声明的时候在后面加throw()关键字?


    解释:

    C++函数后面加关键字throw(something)限制,是对这个函数的异常安全作出限制;这是一种异常规范,只会出现在声明函数时,表示这个函数可能抛出任何类型的异常。


    void fun() throw();      //表示fun函数不允许抛出任何异常,即fun函数是异常安全的。

    void fun() throw(...);    //表示fun函数可以抛出任何形式的异常。

    void fun() throw(exceptionType);    // 表示fun函数只能抛出exceptionType类型的异常。


    举例说明:

    void GetTag() throw(int);                     // 表示只抛出int类型异常
    void GetTag() throw(int,char);         // 表示抛出in,char类型异常
    void GetTag() throw();                         // 表示不会抛出任何类型异常
    void GetTag() throw(...);                      // 表示抛出任何类型异常

    void GetTag() throw(int); 表示只抛出int类型异常,并不表示一定会抛出异常,但是一旦抛出异常只会抛出int类型,如果抛出非int类型异常,调用unexsetpion()函数,退出程序。

    void GetTag() throw();  假如你加一个throw()属性到你的永远不会抛出异常的函数中,编译器会非常聪明的知道代码的意图和决定优化方式。


    展开全文
  • C++函数声明和定义

    千次阅读 2016-04-12 11:06:44
    在上一节,我们已经学会了如何阅读...首先,我们要告诉电脑,我们自己编写了一个函数,即这个函数是存在的,这叫作函数声明(Declaration)。其次,我们要告诉电脑这个函数是怎么运作的,这叫作函数的定义(Definiti
    在上一节,我们已经学会了如何阅读函数原型和如何调用一个函数。然而,仅靠系统给出的标准库函数是不够用的。我们有时候要根据我们的实际要求,写出一个合适自己使用的函数。
    那么,我们如何来自己动手编写一个函数呢?

    首先,我们要告诉电脑,我们自己编写了一个函数,即这个函数是存在的,这叫作函数的声明(Declaration)。其次,我们要告诉电脑这个函数是怎么运作的,这叫作函数的定义(Definition)。显然,函数的声明和函数的定义是两个不同的概念。声明表示该函数存在,而定义则是表示该函数怎么去运行。

    我们平时做事都是要有先后顺序的,如果把次序颠倒了可能会惹些麻烦出来。编写函数的时候也一样。我们必须在调用一个函数之前就告诉电脑这个函数已经存在了,否则就成了“马后炮”。所以,我们一般把函数的声明放在主函数前面。

    函数的声明

    在C++中,函数原型就是函数的声明。所以,函数原型除了向用户说明如何使用一个函数以外,还告诉电脑存在这样一个可以使用的函数。

    我们已经介绍了函数原型的结构,只不过“产生结果类型”这个名称是为了方便理解而起的。它应该称为“返回值类型”,用任意一种数据类型来表示,比如int或者char等等,当然还包括空类型void。多个参数则构成了“参数表”,表示运行这个函数需要哪些数据。于是,函数原型的结构就是:
        返回值类型函数名(参数表);
    函数声明同变量的声明一样,是一句语句。所以在语句结束要加上分号。函数名、参数名的规则和注意事项同变量名一样。

    关于“返回”的概念稍后再作介绍,我们先来说说参数表。我们知道,在声明函数的时候,会写一些参数,而在调用函数的时候需要一一对应地填入这些参数。虽然它们都叫参数,但在不同的情况下,它们的含义是不同的。在声明一个函数的时候,参数是没有实际值的,只是起到一个占位的作用,所以称为形式参数,简称“形参”;在调用一个函数的时候,参数必须有一个确定的值,是真正能够对结果起作用的因素,所以称为实际参数,简称“实参”。我们拿数学中的函数作为例子,g(x,y)=x/4+y中的x和y就是形式参数,而g(4,1)=4/4+1=2中的4和1就是实际参数;如果令a=4、b=1,那么g(a,b)中的a和b也是实际参数。

    函数的定义

    说完了函数的声明,我们来说函数的定义。其实函数的定义对大家来说是比较熟悉的。因为我们之前所写的程序都是对主函数的定义。函数定义的格式为:
    没有分号结尾的函数原型
    {
        语句块;
    }


    我们把函数定义中没有分号结尾的函数原型称为函数头,把之后的语句块称为函数体。任何一个函数的定义不能出现在另一个函数体内。但函数体内可以调用任何一个函数,包括其本身。
    下面我们先来看一个例子,你就会对函数定义有些了解了。(程序6.2.1)



    运行结果:
    5
    程序在运行的时候从main函数开始,遇到调用一个用户定义的函数max,则去查找这个max函数的定义,然后运行max函数。运行完了以后,回到调用max函数的地方,继续后面的语句,直到程序结束。所以整个程序的运行过程如箭头所示。

    不要使用相同的变量和参数

    如果在一个班级里有两个同名同姓的同学,那么老师上课点名将是件麻烦事。因为大家都搞不清到底是在叫谁。可是,如果两个不同的班级有两个同名同姓的同学,就不会发生这种尴尬,因为老师在不同的教室点相同的名字,会有反应的只有一个同学。

    我们把这个问题套用到函数上来。如果在同一个函数有两个名字相同的变量,那么电脑将无法分清到底要使用哪个变量,导致错误发生。而在不同的函数中,即使有相同名称的变量,由于在某一个函数中该变量的名称是唯一的,电脑也能方便的识别要使用哪个变量。因此,我们得到这样一个结论:一般情况下,在同一个函数中,不能有名称相同的变量或参数;在两个不同的函数中,可以有名称相同的变量或参数。

    下面就让我们来看一个实例:(程序6.2.2)
    #include "iostream.h"
    int max(int a,int b,int c);//求三个整数的最大者
    int min(int a,int b,int c);//求三个整数的最小者
    void output(int a);//输出功能
    int main()
    {
       int a=3,b=4,c=2;
       output(max(a,b,c));//把max函数的返回值作为output函数的实参
       output(min(a,b,c));
       return 0;
    }
    int max(int a,int b,int c)//不在同一个函数中,参数名重复没关系
    {
       if (a>=b && a>=c) return a;
       if (b>=a && b>=c) return b;
       return c;//一旦执行了前面的return,这句就不会被执行到
    }
    int min(int a,int b,int c)
    {
       if (a<=b && a<=c) return a;
       if (b<=a && b<=c) return b;
       return c;
    }
    void output(int a)
    {
       cout <<a <<endl;
       return;//返回空类型
    }
    运行结果:
    4
    2
    要注意,一旦函数运行结束,那么该函数中声明的参数和变量都将消失。就像下课了,同学们都回家了,老师叫谁都是叫不应的。
    展开全文
  • C++ 函数声明后面的const用法

    千次阅读 2017-10-29 21:39:34
    ...通常我们会看到一些函数声明后面会跟着一个const,这个const是做什么的呢? 看一下下面的例子,就知道了。直接在编译前,就会提示下面的两个错误 #include "stdafx.h" #include using

    转载 http://www.cnblogs.com/xing901022/p/3413019.html


    void function() const{}


    通常我们会看到一些函数声明后面会跟着一个const,这个const是做什么的呢?
    看一下下面的例子,就知道了。直接在编译前,就会提示下面的两个错误

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    class aa{
        int num;
    public:
        aa(){
            int b =10;
            num = b;
        };
        void out1(){
            cout<<num<<endl;
        }
        void out2() const{
            cout<<num<<endl;
        }
        void out3() const{
            num+=10; //出错,const函数不能修改其数据成员
            cout<<num<<endl;
        }
    
    };
    int _tmain(int argc, _TCHAR* argv[])
    {
        aa a1;
        a1.out1();
        a1.out2();
        a1.out3();
        const aa a2;
        a2.out1(); // 错误,const的成员 不能访问非const的函数
        a2.out2();
        a2.out3();
        return 0;
    }

    在类成员函数的声明和定义中,
    const的函数不能对其数据成员进行修改操作。
    const的对象,不能引用非const的成员函数。

    展开全文
  • 1 无参函数声明void f() { }int main(void) { f(10,“hello"); return 0; }上述代码在C语言中是完全正确的。但是在C++中确是错误的。void f() * 在C中表示函数f可以接受任何类型,任意数量的参数。(然而并...
  • C++函数原型(函数声明

    千次阅读 2015-10-11 19:20:57
      从Java到c++的学习之路!!    在Java中,只要方法...但是在C++中,如果在定义前就调用了,那么要有一个函数声明,也就是函数原型。   #include &lt;iostream&gt; using namespace std; vo...
  • 关于C++模板函数声明与定义的问题

    万次阅读 多人点赞 2018-07-22 21:59:37
    关于C++模板函数声明与定义的问题 关于C++模板函数声明与定义的问题 模板函数出现的问题 模板函数问题解决 模板函数出现的问题 今天在写代码的时候,发现了一个关于模板函数的问题。如下所示, demo...
  • C++函数声明、函数定义、函数调用

    万次阅读 多人点赞 2019-07-02 17:30:05
    如果使用自己定义的函数,这个函数在调用它的函数的后面(比如在main函数后面),则必须在调用之前进行函数声明。因为程序是从上到下逐行编译的,若无函数声明,则会无法识别函数。 函数声明在编译时并不检查参数...
  • C++ 函数声明和定义

    万次阅读 多人点赞 2019-03-23 01:07:00
    在程序中使用函数时,你必须先声明它然后再定义,声明的目的是告诉编译器你...通常我们把函数声明叫做函数原型,而把函数定义叫做函数实现。 函数的声明: 如:int Add(int, int); 1,在C++中,函数原型就是函...
  • C语言和C++都保留了函数声明这一需求,在声明时都有如下要求: 返回值类型与原函数必须相同 形参表的类型与顺序必须与原函数相同,但是函数原型可以不写形参名称,即便写了形参名称也可以和原函数不一样 但是有一...
  • c++友元函数声明及其调用

    万次阅读 2017-09-26 10:59:12
    友元函数入门!!!
  • C中如何调用C++函数、类内函数

    千次阅读 2015-01-01 09:06:46
    C中如何调用C++函数、类内函数 在C中如何调用C++函数的问题,简单回答是将函数用extern "C...将C++函数声明为``extern "C"''(在你的C++代码里做这个声明),然后调用它(在你的C或者C++代码里调用)。例如: // C++
  • c++模板函数声明和定义分离

    千次阅读 2016-09-24 12:32:39
    c++模板不支持分离编译, 把你模板类的声明和实现放到.h文件里面 。按照这个说的把.h和.cpp文件合并后,果然可以了。 但是为什么呢,为什么模板就不支持分离编译?---继续google ing 搜到了如下文章(文章原文...
  • C中如何调用C++函数?

    千次阅读 2016-08-08 09:32:13
    前阵子被问及一个在C中如何调用C++函数的问题,当时简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂拿来Mark一下。...
  • 命名空间是一个范畴,它包含类声明,函数声明,常量声明和模板声明等名字空间成员。本文拟讨论如何在名字空间中声明自己的类和函数,以及如何在程序中使用它们。 在使用C++类时,如果用到命名空间,在使用的时候需要...
  • c++函数声明的后面加=0

    千次阅读 2018-09-10 16:11:58
    纯虚函数是在声明函数时被“初始化”为0的函数声明纯虚函数的一般形式是 virtual 函数类型 函数名 (参数表列) =0; 注意: ①纯虚函数没有函数体; ②最后面的“=0”并不表示函数返回值为0,它只起形式上的...
  • c++ 函数指针

    万次阅读 多人点赞 2019-06-15 21:41:38
    声明指针时,必须指定指针指向的数据类型,同样,声明指向函数的指针时,必须指定指针指向的函数类型,这意味着声明应当指定函数的返回类型以及函数的参数列表。 例如: double cal(int); ...
  • C++函数重载

    千次阅读 多人点赞 2017-07-10 17:43:05
    C++程序中,将语义、功能相似的几个函数用同一个名字来表示,即为函数名重载。二、函数重载的作用: 1、函数重载便于记忆,提高了函数的易用性。 2、类的构造函数需要重载机制,C++规定构造函数必须与类名相同。...
  • C++ 函数模板

    万次阅读 2018-08-13 17:42:51
    函数模板是通用的函数描述,它们使用泛型来定义函数,其中的泛型可用具体的类型替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。由于模板允许以泛型(而不是具体类型)的方式编写程序,因此有时候...
  • c++函数必须先声明在使用

    万次阅读 2015-06-19 04:22:56
    c++函数必须先声明在使用,比如:#include using namespace std; //void A(); void A() //定义并声明了函数A { cout调用B:"; B(); } void B() //定义并声明了函数B { cout调用A:"; A(); }int main()
  • C++函数模板声明和定义分离的方法

    千次阅读 2013-12-14 01:48:13
    废话不说,先上代码。 // template_test.h template T MyMax(T a,T b); template float MyMax(float a,float b);... 另外,这种方法只适用于函数模板,类模板中成函数还是要声明和实现在同一文件中。
  • 虚函数的声明和定义具体关于虚函数的知识不做多讲,我在定义一个抽象类时,忘了将一个虚函数声明为 纯虚函数,又没有对其定义, 导致编译报错时报错如下:undefined reference to `vtable for Fibonacci'错误提示的...
  • C++ 函数原型

    千次阅读 2017-04-01 09:58:40
    一,函数原型语法 函数原型是一条语句,因此必须使用分号结束。获得原型最简单的方法是复制函数定义中的函数头。函数原型不要求提供变量名,有类型列表就可以了。 二,为什么需要函数原型? 函数原型描述了函数到...
  • c++函数指针和函数对象

    千次阅读 2019-04-07 17:29:05
    C++ 函数指针和函数类型一、 导述二、c++成员函数在内存中的存储方式新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个...
  • C++函数编译原理和成员函数的实现

    千次阅读 2017-07-25 15:34:54
    【学习于C语言中文网,请勿转载】 对象的内存中只保留了成员变量,除此之外没有任何其他信息,程序运行时不知道 stu 的...C++函数的编译 C++和C语言的编译方式不同。C语言中的函数在编译时名字不变,或者只是简单的加
  • C++声明函数原型的作用

    千次阅读 2018-11-08 23:02:14
    #include &lt;...// 这个声明函数原型的代码必须有, 如果没有的话会报use of undeclared identifier 'simon' 这个异常 void simon(double n); int main() { simon(3); cout &lt;&...
  • C中调用C++函数与C++中调用C函数

    千次阅读 2017-09-21 16:53:00
    C中调用C++函数 将 C++ 函数声明为``extern "C"''(在C++ 代码里做这个声明),然后调用它(在 C 或者 C++ 代码里调用)。例如: // C++ code: extern "C" void f(int); void f(int

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 442,135
精华内容 176,854
关键字:

c++函数声明

c++ 订阅