码迷,mamicode.com
首页 > 编程语言 > 详细

c++,类的组合

时间:2014-11-13 16:26:14      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   os   sp   strong   div   on   

1. 在A类中以B类的对象作为成员变量,称为类的组合(composition)。

2. 在组合时,一般在A类的构造函数初始化列表中要初始化B类(会调用B类的一个构造函数),

    如果没有初始化B类,则会调用B类中可以不传参数的构造函数。

#include <iostream>
using namespace std;
#include <string>
//--------------------------------------
class A
{
public:
    int m_ax ;
    int m_ay ;

    A();
    A(int val,int vy);
};
A::A()
{

}
A::A(int vx,int vy)
{
    this->m_ax = vx;
    this->m_ay = vy;
}
//--------------------------------------
class B
{
public:
    int m_bx ;

    B();
    B(int val);
};

B::B()
{

}
B::B(int val)
{
    this->m_bx = val;
}
//--------------------------------------
class C
{
public:
    A ac;
    B bc;
    C();
    C(int vax,int vay,int vbx );
    C(int vax ,int vay);
    C(int vbx) ;
    

    void show();
};
C::C()
{

}
C::C(int vax ,int vay,int vbx)
    :ac(vax,vay),bc(vbx)
{

}
C::C(int vax ,int vay)
    :ac(vax,vay)
{

}

C::C(
int vbx):bc(vbx)//没有初始化的内部类对象,可以不写出来 ,也可以写出来ac()。 C::C(int vbx):bc(vbx),ac()
{

}
void C::show()
{
    cout<<"ac.m_ax = "<<ac.m_ax<<endl;
    cout<<"ac.m_ay = "<<ac.m_ay<<endl;
    cout<<"bc.m_bx = "<<bc.m_bx<<endl;
}
//--------------------------------------
int main()
{
     C c1(1 ,2 ,3 );
     c1.show();
    while(1);
    return 0 ;
}
// ac.m_ax = 1
// ac.m_ay = 2
// bc.m_bx = 3

 

c++,类的组合

标签:style   blog   io   color   os   sp   strong   div   on   

原文地址:http://www.cnblogs.com/mylinux/p/4094988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!