一.内联函数
1.内联函数的声明:
2,内联函数与普通函数的区别
建议编译器将指定的函数体插入并取代每一处调用该函数的地方(上下文),从而节省了每次调用函数带来的额外时间开支。但在选择使用内联函数时,必须在程序占用空间和程序执行效率之间进行权衡,因为过多的比较复杂的函数进行内联扩展将带来很大的存储资源开支。另外还需要特别注意的是对递归函数的内联扩展可能引起部分编译器的无穷编译
二.类内定义
1.定义:顾名思义就是在类的里面定义成员函数
2.类内定义与内联函数的联系
一般情况下类内定义的成员函数在编译的过程中被默认为内联函数,那些复杂的函数则编译成普通函数。
三.类外定义
1.分类
同文件类外定义:
例子:
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
/****************************************************************/
/*定义一个Teacher类,要求分别采用同文件类外定义
*和分文件类外定义的方式完成,具体要求如下:
*数据成员:
* 名字
* 年龄
* 性别
*成员函数
* 数据成员的封装函数
* 授课teach*/
/****************************************************************/
class Teacher
{
public:
void setName(string _name);
string getName();
void setGender(string _gender);
string getGender();
void setAge(int _age);
int getAge();
void teach();
private:
string m_strName;
string m_strGender;
int m_iAge;
};
void Teacher::setName(string _name)
{
m_strName = _name;
}
string Teacher::getName()
{
return m_strName;
}
void Teacher::setGender(string _gender)
{
m_strGender = _gender;
}
string Teacher::getGender()
{
return m_strGender;
}
void Teacher::setAge(int _age)
{
m_iAge = _age;
}
int Teacher::getAge()
{
return m_iAge;
}
void Teacher::teach()
{
cout << "现在上课" << endl;
}
int main(void)
{
Teacher t;
t.setName("孔子");
t.setGender("男");
t.setAge(30);
cout << t.getName() <<" "<<t.getGender()<<" "<<t.getAge() <<endl;
t.teach();
system("pause");
return 0;
}
分文件类外定义:
分文件类外定义就不代码演示了,记得类的定义在.h文件中,然后来的成员函数的定义在源文件中就好了。