zoukankan      html  css  js  c++  java
  • 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();
        return0;
    }

    输出结果:

    A constructor is called!
    B constructor is called!

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

    B constructor is called!
  • 相关阅读:
    redis-cluster的实例动态调整内存
    nginx upstream的五种分配方式
    cdn、回源等问题
    gpu机器安装nvidia-smi和python的tensorflow-gpu模块
    Hadoop、HBase、Spark单机安装
    数学的概念
    Eclipse 2020版安装&初始化
    191002一些岗位数量统计
    现象:SpringApplication.run后面的语句未执行
    Ubuntu 18.04安装docker
  • 原文地址:https://www.cnblogs.com/hainanlinyu/p/3228407.html
Copyright © 2011-2022 走看看