博客
关于我
C++面向对象(十一)多继承
阅读量:124 次
发布时间:2019-02-27

本文共 384 字,大约阅读时间需要 1 分钟。

关于C++中的虚基类和多继承导致的内存浪费问题,可以通过以下方法进行优化:

  • 虚继承的应用:确保所有直接继承自A的派生类(如B和C)使用虚继承。这样,派生类只保留一个基类A的拷贝,而不是各自有独立的拷贝。例如,定义B和C时使用class B : virtual public Aclass C : virtual public A

  • 构造函数的初始化列表:在派生类D的构造函数中,明确调用A、B和C的构造,以确保正确的构造顺序和内存布局。例如,D的构造函数应包含A(data), B(data), C(data)。这样,A会被构造为共享拷贝,而B和C则各自拥有独立的空间。

  • 构造顺序:确保构造顺序是A → B → C → D。这样,虚基类A会被先构造,然后是B和C,最后是D。这样,内存会被合理分配,避免浪费。

  • 通过以上方法,内存浪费问题得到有效解决,优化了内存使用。

    转载地址:http://jmyd.baihongyu.com/

    你可能感兴趣的文章
    org.apache.ibatis.exceptions.PersistenceException:
    查看>>
    org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned
    查看>>
    org.apache.ibatis.type.TypeException: Could not resolve type alias 'xxxx'异常
    查看>>
    org.apache.poi.hssf.util.Region
    查看>>
    org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
    查看>>
    org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /
    查看>>
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugManifest'
    查看>>
    org.hibernate.HibernateException: Unable to get the default Bean Validation factory
    查看>>
    org.hibernate.ObjectNotFoundException: No row with the given identifier exists:
    查看>>
    org.springframework.amqp.AmqpConnectException:java.net.ConnectException:Connection timed out:connect
    查看>>
    org.springframework.beans.factory.BeanDefinitionStoreException
    查看>>
    org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata
    查看>>
    org.springframework.boot:spring boot maven plugin丢失---SpringCloud Alibaba_若依微服务框架改造_--工作笔记012
    查看>>
    SQL-CLR 类型映射 (LINQ to SQL)
    查看>>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    查看>>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    查看>>
    org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded
    查看>>
    org.tinygroup.serviceprocessor-服务处理器
    查看>>
    org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0
    查看>>
    org/hibernate/validator/internal/engine
    查看>>