类哎呀实现CPP
class oop realions cpp
我用C ++开始了一门新的OOP课程,对不起,我的英语不好。
我阅读了一些有关泛化(继承)、聚合和关联的信息。 还是看不懂这个例子:
假设出租车想到一辆汽车,包含像发动机和车轮这样的子类。我想"允许出租车"访问子类的所有字段(或者这就是我认为我想要的,请告诉我是否有更好的方法)
引擎.h:
class Engine{
public:
Engine(status nstatus, int npower, double nEngineVer) :EngineStatus(nstatus), power(npower), EngineVer(nEngineVer)
{};
private:
status EngineStatus;
int power;
double EngineVer;
};
出租车:
#include "engine.h"
class Taxi{
public:
Taxi(int id, int ,km, const Engine &engine) :id(id),km(km),engine(engine){};
void printMe(){
cout << id << ' ' << km << ' '<< endl;
}
private:
Taxi(); //default Ctor is private! we dont want to create broken Taxi e.g no engine
int id;
int km;
Engine engine;
};
假设如果我使用 printMe,我想打印出租车的全部值,我应该怎么做(允许访问引擎值)
所有答案!
您还可以为引擎类实现所谓的"Getters"。也就是说,当你是一个更有经验的程序员时,访问类属性的最常见方法。
像这样:
class Engine {
public:
Engine(status nstatus, int npower, double nEngineVer)
: EngineStatus(nstatus), power(npower), EngineVer(nEngineVer)
{}
int getPower() const { return power; }
private:
status EngineStatus;
int power;
double EngineVer;
};
class Taxi {
public:
Taxi(int id, int ,km, const Engine &engine)
: id(id), km(km), engine(engine)
{}
void printMe()
{
cout << engine.getPower() << endl;
}
private:
int id;
int km;
Engine engine;
};
剩下的你可以一个人做,我不会做你的功课。而且,如果您创建了自定义构造函数,则无需将默认构造函数设置为私有,只需不要声明它即可。
如果你只想打印Engine
值,你可以用Engine
编写一个函数来做到这一点:
class Engine {
// ...
void printMe(){
cout << EngineStatus << ' ' << power << ' ' <<
EngineVer << endl;
}
// ...
};
然后只需从Taxi
调用它:
void printMe() {
cout << id << ' ' << km << ' ';
engine.printMe();
}
最基本的方法是将引擎变量声明为 public
而不是私有。在这种情况下,您可以从 Taxi 实例直接访问例如 engine.power
.
相关文章:
- 在 cpp 中最简单的图形实现
- 如何使用 CPP REST SDK 实现 CAS(中央认证服务)?
- 如何制作 cmakelists.txt编译使用在其他地方声明和实现的函数和类的 CPP
- 在 *.cpp 文件中实现的 c++ 函数/方法永远不会内联扩展吗?
- 多文件类实现Cpp
- 如何在.cpp中实现属于非模板类的模板函数
- SystemC:单个 cpp 文件中的多个模块实现
- 在h文件上内联发布版本并在cpp上实现调试版本的函数
- 在 h 和 cpp 文件中单独声明和实现模板有时有效,有时会出现链接器错误
- 从用户定义的头文件调用函数时出现未定义的引用错误,其实现位于.cpp文件中
- 在.cpp文件中实现时访问私有成员
- 在CPP文件中实现非模板类的模板成员
- 在实现(.cpp)文件中不包含相应的头文件(.h)文件仍然编译?
- 覆盖 CPP 中的链接以指向模拟实现
- 将函数及其实现移动到与主文件不同的文件(.hpp 和 .cpp)时,性能会受到很大影响
- openssl rc4 命令行加密和 cpp 文件实现 rc4 之间的区别
- 在C++中,我不能在不分离标头和 cpp 的情况下实现此类吗?
- 跳过 cpp 中的列表实现
- PFArrayD.cpp实现复制构造函数
- 如何在CPP实现中使用MT(或类似的)RNG算法