请问C++中啥是函数的定义性声明和函数的引用性声明,有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问C++中啥是函数的定义性声明和函数的引用性声明,有啥区别相关的知识,希望对你有一定的参考价值。

函数定义性声明:表明函数存在当前cpp文件。
函数的引用性声明:表示函数在外部cpp文件中。
int function1(); //函数存在当前cpp文件。
extern int function2(); //表示函数在外部cpp文件中定义。
如果外部cpp中找不到function2的定义,编译可以通过,连接时会报未定义的外部符号。
参考技术A 引用性声明:extern int a; //告诉编译器变量a在其他文件定义,不分配内存空间
定义性声明:int a;//为变量a分配内存空间
参考技术B eicaddev的回答很对了,extern这是个关键字,引用变量或者函数的

c++提高编程 1。模板

泛型编程和STL技术

1、模板

1.1模板的概念

模板就是建立通用的模具,大大提高复用性

模板不能直接使用,只是一个框架,也不是万能的

 

1.2函数模板

函数模板作用:

建立通用函数,其函数返回类型和形参类型可以不具体指定,用虚拟的类型来代表

语法:

template     <typename T>  

函数声明或定义

解释:

template---声明创建模板

typename---表明其后面的符号是一个数据类型,可用class代替

T---通用的数据类型,可用其他字符替换

案例:

template     <typename T> 

void mySwap(T &a,T &b)

{

  T temp=a;

  a=b;

  b=temp;

}

void test( )

{

       int a=10,b=10;

  mySwap(a,b);//1、自动类型推导

  mySwap<int>(a,b);//   2、显示指定类型

}

1.3.1类模板语法

1.3.2类模板与函数模板的区别

1.类模板没有自动类型推导方式

void test01()

{

//Person p("孙悟空",200);无法用自动类型推导

Person<string,int>p("孙悟空",200);

}

2.类模板在模板参数可以有默认参数

 

1.3.3类模板中的成员函数创建时间

类模板中的成员函数和普通类的成员函数创建时机不同:

1.普通类的成员函数一开始就创建

2.类模板的成员函数在调用创建

以上是关于请问C++中啥是函数的定义性声明和函数的引用性声明,有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

请问啥是成员函数的定义?

高阶函数:声明实现(定义)与调用

请问JAVA中啥是集合,和数组比有啥区别呢?谢谢

Java中啥是接口回调?

JavaScript中啥是prototype原型对象?它有和作用?

labview中啥是严格类型VI,怎样创建严格类型VI