#include <iostream>
using namespace std; class Vehicle
{
public:
Vehicle(float speed=0,int total=0)
{
Vehicle::speed = speed;
Vehicle::total = total;
}
protected:
float speed;//速度
int total;//最大载人量
}; class Motor
{
public:
Motor(char *motor)
{
Motor::motortype = motor;
} char* SMT(Motor &temp);
protected:
char *motortype;//发动机型号
};
char* Motor::SMT(Motor &temp)
{
return temp.motortype;
} class Car:public Vehicle//继承的体现
{
public:
Car(float speed,int total,int aird,char *motortype):Vehicle(speed,total),motor(motortype)
{
Car::aird = aird;
} Motor rm(Car &temp);
protected:
int aird;//排量
Motor motor;//类组合的体现
}; Motor Car::rm(Car &temp)
{
return temp.motor;
} //--------------------------------------------------------------
void test1(Vehicle &temp)
{
//中间过程省略
cout<<"qinbin"<<endl;
};
void test2(Motor &temp)
{
cout<<temp.SMT(temp);//读者这里注意一下,temp既是对象也是对象方法的形参
}
//-------------------------------------------------------------- int main()
{
Car a(150,4,250,"奥地利AVL V8");
test1(a);
// test2(a);//错误,Car类与Motor类无任何继承关系
//test2(a.rm(a));//如果Car类成员是public的那么可以使用test2(a.motor)
Motor test =a.rm(a); 这2步正确,而上面一步不对,是因为引用 临时存储,所以储存下来就对了 编译器问题
test2(test);
cin.get();
}
Motor& rm(Car &temp);

Motor& Car::rm(Car &temp)
{
return temp.motor;
} 改这2步,也会正确

据说是编译器问题,而不是说的 局部变量被销毁的问题。而是编译器不支持在函数内增加自创对象,并且自动转换为对象引用的问题。很常用!

C++类组合问题的更多相关文章

  1. python 类组合

    场景:有一辆车违章需要通知到车主 定义两个类车辆类和通知类,车辆类和通知类并没有共同点,但是要通知车主这两个类就有了关联,这时候可以把这两个类组合在一起 #!/usr/bin/python3 # -* ...

  2. python3 类 组合

    解决类与类之间代码冗余问题有两种解决方案: 第一 是继承,第二是组合 1:继承   描述的是类与类之间的也就是什么是什么的关系 2: 组合  描述的是类与类之间的关系,  是一种什么有什么的关系的,也 ...

  3. Python mix-in 组合 ~ 将类组合起来 .

    在一个池塘中有10个乌龟 1 条鱼 . class Turtle: def __init__(self,x): # 在生命对象的时候 说明对象的 数量 . (还是一个对象 . 数量只是该对象的一个属性 ...

  4. java 对象的组合,一个类组合到另一个类中(例如手机卡装到手机上)

    Example4_9.java public class Example4_9 { public static void main(String args[]) { SIM simOne = new ...

  5. Tornado 类与类组合降低耦合

  6. css伪类的组合用法

    利用伪类组合,可以用css代替js以达到目的,少些一下js .textarea:empty:before { display: block; content: '请输入'; color: #ababa ...

  7. 组合,Mixin,类、类对象、实例对象

    1.组合,将几个横向关系的组合在一起.所谓的组合就是将类的实例化放到新类里面,那么就将旧类组合进去了. class Turtle: def __init__(self, x): # 注意 init 前 ...

  8. Java编程的逻辑 (14) - 类的组合

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  9. python's ninteenth day for me 类的组合,继承。

    组合: 表示一个类的对象作为另一个类对象的属性. 实例化的过程: 1,创建一个对象. 2,__init__ 给对象添加一些属性,对象默认的名字为self. 3,将self所指向的内存空间返回给实例化他 ...

随机推荐

  1. 伯俊BOS2.0关于订金单的处理方案

    订金单功能调整设计 一.     功能确认 BPOS关于订金的使用对应的是"预收单",原"预收单"设置有商品明细,根据客户对订金的需求,取消原有"商品 ...

  2. git 工作区与版本库

    git 工作区.版本库 在我们使用git的时候,我们脑海中一定要有一个关于git的框架,如下图: 我们先对git的工作区.暂存区.本地仓库做一个基本的解释 工作区: 就是我们电脑中代码的下载目录 版本 ...

  3. Choreographer全解析

    前言 今天继续屏幕刷新机制的知识讲解,上文说到vsync的处理,每一帧UI的绘制前期处理都在Choreographer中实现,那么今天就来看看这个神奇的舞蹈编舞师是怎么将UI变化反应到屏幕上的. 代码 ...

  4. 聊聊风口上的 eBPF

    eBPF 是一个用于访问 Linux 内核服务和硬件的新技术,由于其灵活性和高性能等特点,被迅速用于网络.出错.跟踪以及防火墙等多场景.目前国内已有少数企业开始尝试将 eBPF 引入生产实践,又拍云也 ...

  5. CPU性能测试——CoreMark篇

    本文将介绍使用CoreMark测试程序对我们小组自研芯片进行性能的测试,记录了CoreMarK工具的使用以及对其测试结果进行分析 测试环境: PC OS: Ubuntu20.04 LTS CPU: 自 ...

  6. 关于 C# DataSet.ReadXml 无法获取Xml数据的问题解析

    首先这次遇到问题的是,C# Winform 项目中新建的数据集 IDE 是 VS2013 调用如下: private void Form1_Load(object sender, EventArgs ...

  7. 百度智能(文本识别),API传图OC代码与SDK使用

    百度智能中的文本识别中的身份证识别,有API方式和SDK方式 API方式 百度智能(文本识别),百度API传图没有提供OC的示例,这里提供一下 - (void)OCTest:(NSString*)to ...

  8. Vue.nextTick()的使用

    什么是Vue.nextTick()?? 定义:在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM. 所以就衍生出了这个获取更新后的DOM的Vue方法.所 ...

  9. Educational Codeforces Round 102 (Rated for Div. 2)

    比赛地址 A(水题) 题目链接 题目: 给出一个数组\(a\)并能进行一个操作使得数组元素更改为数组任意其他两元素之和,问是否可以让数组元素全部小于等于\(d\) 解析: 排序后判断最大值是否小于等于 ...

  10. Java基础概念性问题整理,面试题型整理,附带答案详解供参考,首次整理!

    题目目录 Java基础 1.JDK1.8新特性? 2.面向对象和面向过程的区别? 3.什么是值传递和引用传递? 4.什么是不可变对象? 5.讲讲类的实例化顺序? 6.java 创建对象的几种方式 7. ...