注册 登录
编程论坛 C++教室

对类组合和继承的思考

hgxwd310 发布于 2007-09-12 23:08, 796 次点击

#include <iostream>

using namespace std;

class A{
public:
int i;
A(int ii):i(ii){cout<<"A constructor"<<endl;}
~A() {cout<<"A destructor"<<endl;}
void fun() const {cout<<"A fun()"<<endl;}
};


class B{
public:
int i;
B(int ii):i(ii){cout<<"B constructor"<<endl;}
~B(){cout<<"B destructor"<<endl;}
void fun() const {cout<<"B fun()"<<endl;}
};


class C:public B{
public:
A a;
C(int ii):B(ii),a(2*ii) {cout<<"C constructor"<<endl;}
~C() {cout<<"C destructor"<<endl;};
void fun() const {a.fun();B::fun();}
};


int main()
{
C c(47);
c.fun();
c.a.fun();
cout<<"c.i:"<<c.i<<endl;
cout<<"c.a.i:"<<c.a.i<<endl;
return 0;
}

3 回复
#2
wangweicoin2007-09-12 23:27

楼主要问什么呢?是初始化顺序吗?当然是先初始化继承成员,然后是內嵌成员,最后是本类普通成员。

#3
hgxwd3102007-09-12 23:37
类的组合和继承的区别??
#4
wangweicoin2007-09-13 00:06
类的继承是子类可以访问父类的成员函数,继承下来就是子类自己的了(is a)子类自己便可调用,而组合是一种代码的复用,就是在一个类中在创建另一个类的对象,然后再通过那个对象来访问它的成员函数(has a),节省了代码的重复编写。
1