请问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++中啥是函数的定义性声明和函数的引用性声明,有啥区别的主要内容,如果未能解决你的问题,请参考以下文章