对象组成
组合
- 对象组成对象
class A
{
public:
A::A(int i):b(i){};
private:
B b;
}
//先初始化,后构造
class A
{
public:
A::A(int i){b.set(i)};//前提必须有默认值
private:
B b;
}
//执行构造后又执行幅值,
继承
- 类组成新的类
- 父类构造先执行,子类析构先执行
- 如果子类有与父类相同的函数,父类的将被屏蔽包括他的重载函数,
- protected 只供子类使用,相当于子类的private,并不提供对象直接使用
#include<iostream>
class Person
{
private:
int weight;
int lenght;
int age;
int sex;
public:
Person(int i,int j,int k,int h):weight(i),lenght(j),age(k),sex(h),sceret(5)
{std::cout<<"Person()";};
void setage(int i){age=i;}
void setsex(int i){sex=i;}
void setw(int i ){weight=i;}
void setl(int i){lenght=i;}
void print()
{
std::cout<<sex<<std::endl;
}
void print(std::ostream& oh)
{
oh<<sceret<<std::endl;
}
void set(int i)
{sceret=i;}
protected:
int sceret;
};
class Student:public Person
{
public:
Student(int i,int j,int x,int y):
Person(i,j,x,y)
{
}
void print()
{
std::cout<<sceret<<std::endl;
}
};
int main()
{
Student A(0,1,2,3);
A.print();
A.set(6);
A.Person::print(std::cout); //被屏蔽后使用::
return 0;
}