C++中的子对象

当一个类的成员是某一个类的对象时,该对象就为子对象。子对象实际就是对象成员。

例如:

class  A
       { ……. }
       
class
 B
       { 
public
: …….
        
private
:  A  a;……… };

其中, a是子对象,它是A类的对象作为B类的成员。

在类中出现了子对象或对象成员时,该类的构造函数要包含对子对象的初始化,通常采用成员初始化列表的方法来初始化子对象。在成员初始化表中包含对子对象的初始化和对类中其他成员的初始化。

#include <iostream>
using namespace  std;

class
 A
{
public
:
    A(
void
){
        cout
<<"A constructor is called!"<<
endl;
    }
};

class
 B
{
public
:
    B (
void
){
        cout
<<"B constructor is called!"<<
endl;
    }
private
:
    
static B*
 p_myself;
public
:
    
static B*
 instance()
    {
        
if(p_myself==
NULL)
        {
            p_myself
=new
 B();
        }
        
return
 p_myself;
    }

private
:
    A a;
//a为子对象

};

B
* B::p_myself=
NULL;

int
 main()
{
    B
*
 bb;
    bb
=
B::instance();
    
return 0
;
}

输出结果:

A constructor is called!
B constructor 
is called!

若将 A a; 改为A* a;(即定义一个指向A类对象的指针),则在初始化B时,不会初始化A。即输出结果为:

B constructor is called!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值