类内定义
类内定义的函数优先选择编译为内联函数
类外定义
分为两种:
同文件类外定义
分文件类外定义
举例:
同文件类外定义
新建一个Car.cpp
class Car{
public:
void run();
};
void Car::run(){}
分文件类外定义
号称专业的程序员都会使用分文件类外定义
新建一个Car.h
class Car{
public:
void run();
};
新建一个Car.cpp
#include "Car.h"
void Car::run(){}
举例
定义一个Teacher类,要求分别采用同文件类外定义和分文件类外定义的方式完成,具体要求如下:
数据成员:
名字
年龄
性别
成员函数:
数据成员的封装函数
授课teach
代码:
同文件类外定义
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
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 << "Now class begins" << 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;
}
分文件类外定义
源.cpp(基本就是主函数吧)
#include"Teacher.h"
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
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;
}
Teacher.cpp(成员函数)
#include"Teacher.h"
#include<iostream>
using namespace std;
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 << "Now class begins" << endl;
}
Teacher.h(数据成员和成员函数的声明)
#include<string>
using namespace std;
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;
};