欲写好一个类,必先将其解剖(类外定义)

类内定义

类内定义的函数优先选择编译为内联函数

类外定义

分为两种:
同文件类外定义
分文件类外定义
举例:
同文件类外定义
新建一个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;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值