C++类组合问题
#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++类组合问题的更多相关文章
- python 类组合
场景:有一辆车违章需要通知到车主 定义两个类车辆类和通知类,车辆类和通知类并没有共同点,但是要通知车主这两个类就有了关联,这时候可以把这两个类组合在一起 #!/usr/bin/python3 # -* ...
- python3 类 组合
解决类与类之间代码冗余问题有两种解决方案: 第一 是继承,第二是组合 1:继承 描述的是类与类之间的也就是什么是什么的关系 2: 组合 描述的是类与类之间的关系, 是一种什么有什么的关系的,也 ...
- Python mix-in 组合 ~ 将类组合起来 .
在一个池塘中有10个乌龟 1 条鱼 . class Turtle: def __init__(self,x): # 在生命对象的时候 说明对象的 数量 . (还是一个对象 . 数量只是该对象的一个属性 ...
- java 对象的组合,一个类组合到另一个类中(例如手机卡装到手机上)
Example4_9.java public class Example4_9 { public static void main(String args[]) { SIM simOne = new ...
- Tornado 类与类组合降低耦合
- css伪类的组合用法
利用伪类组合,可以用css代替js以达到目的,少些一下js .textarea:empty:before { display: block; content: '请输入'; color: #ababa ...
- 组合,Mixin,类、类对象、实例对象
1.组合,将几个横向关系的组合在一起.所谓的组合就是将类的实例化放到新类里面,那么就将旧类组合进去了. class Turtle: def __init__(self, x): # 注意 init 前 ...
- Java编程的逻辑 (14) - 类的组合
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- python's ninteenth day for me 类的组合,继承。
组合: 表示一个类的对象作为另一个类对象的属性. 实例化的过程: 1,创建一个对象. 2,__init__ 给对象添加一些属性,对象默认的名字为self. 3,将self所指向的内存空间返回给实例化他 ...
随机推荐
- Turtlebot3新手教程:OpenCR软件设置(shell)
*本文针对如何利用脚本来更新固件进行讲解 具体步骤如下: burger的固件更新 $ export OPENCR_PORT=/dev/ttyACM0 $ export OPENCR_MODEL=bur ...
- linux based bottlerocket-os
linux based bottlerocket-os 概要 aws开源,专注与运行容器的linux os 参看 https://github.com/bottlerocket-os
- Map遍历的几种方式
代码示例 /** * @author liaowenhui * @date 2020/6/25 11:15 */ public class TestMap { public static void m ...
- 紧急预警】关于爆发的 incaseformat 病毒事件亲身体验
相关报道 incaseformat病毒 360安全卫士服务号 https://mp.weixin.qq.com/s/KM6esd1eUlBt-YHtEwnfuw 广东省网络安全应急响应平台 https ...
- 天梯赛练习 L3-016 二叉搜索树的结构 (30分)
题目分析: 用数型结构先建树,一边输入一边建立,根节点的下标为1,所以左孩子为root*2,右孩子为root*2+1,输入的时候可用cin输入字符串也可用scanf不会超时,判断是否在同一层可以判断两 ...
- Log4j配置按照文件大小和日期分割日志文件
目录 Log4j 下载地址 文件大小分割日志文件 以日期分割每天产生一个日志文件 自定义信息输出到日志文件 Log4j 下载地址 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控 ...
- QPinter 常用绘制图像的方法
阅读本文大概需要 3 分钟 我们在开发软件的过程中,绘制图像功能必不可少,使用 Qt 绘制图像时非常简单,只需要传递几个参数就可以实现功能,在 Qt 中绘制图像的 api有好几个 void drawI ...
- kubernets之pv以及pvc
一 持久卷以及持久卷声明的由来 由于不管是哪种卷,开发者都需要提前预知kubernets集群里面的存储类型,这样就在一定程度上违背了kubernets集群的设计理念,kubernets的设计理念是在由 ...
- 小白的经典CNN复现(二):LeNet-5
小白的经典CNN复现(二):LeNet-5 各位看官大人久等啦!我胡汉三又回来辣(不是 最近因为到期末考试周,再加上老板临时给安排了个任务,其实LeNet-5的复现工作早都搞定了,结果没时间写这个博客 ...
- uni-app开发经验分享一: 多页面传值的三种解决方法
开发了一年的uni-app,在这里总结一些uni-app开发中的问题,提供几个解决方法,分享给大家: 问题描述:一个主页面,需要联通一到两个子页面,子页面传值到主页面,主页面更新 问题难点: 首先我们 ...