本篇博客将介绍内联函数,以及它和类内外定义的关系。
什么是内联函数?内联函数与普通函数最大的不同是编译器在编译的时候,对函数的处理方法。在编译碰到普通函数时,程序会跑到函数体的位置,去执行那里的代码,执行完成后将值返回到函数,再回到主函数中将编译进行下去;而内联函数是直接把函数体的代码和实参来代替函数调用语句,这样就省去了调用和函数和返回值的步骤。定义内联函数的方法只要在定义普通函数的基础上在前面加上inline即可。
但是并不是什么函数都可以定义成内联函数,我们只能将一些逻辑比较简单,代码比较简短的函数定义为内联函数,如果过于复杂,编译器也会拒绝将其编译为内联函数。
在类内定义函数时,编译器会优先将其编译为内联函数,但这并不代表类内定义的函数一定是内联函数。
说到这里,大概大家也知道了类内定义和类外定义是什么意思了。类内定义就是将函数的定义写在类定义里面;类外定义就是将函数的定义写在类定义外面,在类定义中仅对其进行声明。
在之前的例子中,我们写的代码一直用的是类内定义的方法定义函数。下面将介绍如何类外定义函数。
class Student
{
public:
void setName(string _name);
string getName();
void setAge(int _age);
int getAge();
private:
string m_strName;
int m_iAge;
};
void Student::setName(string _name)
{
m_strName = _name;
}
string Student::getName()
{
return m_strName;
}
void Student::setAge(int _age)
{
m_iAge = _age;
}
int Student::getAge()
{
return m_iAge;
}
从上面这段代码我们不难看出,我们定义了一个类Student,在类内我们只声明了函数,而对函数的定义我们全部放在了外面。在类外定义时,需要在函数名前面加上类名+双冒号,这样就表示这个函数是属于这个类中的。
这段代码展现的是在同文件下的类外定义。那么有人会问了,类外定义还可以跨文件吗?是的,我们可以将类的定义放到一个头文件"Student.h"下面,然后在另一个源文件"Student.cpp"下面去定义函数。最后在"demo.cpp"中使用main函数执行。下面就教大家如何实现跨文件类外定义。
1.右键头文件→添加→新建项。
2.选择头文件,命名和类名保持一致,点击添加。
3.将demo.cpp中类定义的部分剪切到头文件中。代码开头也要加上iostream和string头文件,以及using namespace std;,如图所示。
4.右键源文件→添加→新建项,选择C++文件,命名和类名保持一致,点击添加。
5.将函数定义部分剪切到Student.cpp中,头文件中还需要加入include "Student.h"。
6.在demo.cpp的头文件中也加入include "Student.h",在main函数中即可调用执行。
运行结果:
这样,就实现了跨文件的类外定义。要注意的是,跨文件类外定义和同文件一样,在定义时要加上类名+双冒号结构;调用函数时,和原来一样,用对象名.函数名即可。
以上就是本文的全部内容,下一篇我将介绍构造函数。