组合
用已有的对象组合出新的对象。
engine 和tyre 是已知的类,他们组合成一个新类 car。
2种模式
Fully:在新类里面
By reference;通过指针。
继承
我拿已有的类,在这个类的基础上做些改造,来创建一个新的类。新类比原来的类数据更多。父类的私有变量子类不能直接调用
组合是改变类的对象,继承是改变类
学生继承person类。person是基类,父类。
学生类 是子类
public,protected ,private 基本用法
public :所有人都能动
protected: 给子类的,子类可以通过这个函数来调用私有变量。
private:所有人不能动
A.h
#ifndef A_H
#define A_H
class A
{
public:
A();
~A();
void print();//所有都可调用
void setI(int m);//所有都可调用
protected:
void g();//只有子类能调用
private:
int i; //只有A类的函数能调用
};
class B: public A
{
public :
void f();
};
#endif // A_H
a.cpp
#include "a.h"
#include <QDebug>
A::A():i(0)
{
qDebug() << "进入A构造函数" <<endl;
}
A::~A()
{
qDebug() << "进入A析构函数" <<endl;
}
void A::setI(int m)
{
i=m;
}
void A::print(){
qDebug() << "A:print()="+QString::number(i) <<endl;
}
void B::f()
{
setI(20);
print();
}
main.cpp
#include "widget.h"
#include <QApplication>
#include <a.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;//不用看
w.show();//不用看
B b;
b.setI(10);
b.print();
b.f();
return a.exec();
}