如何设置代表接口的类?这只是一个抽象的基类吗?
由于C++缺少interfaceJava和C#的特性,在C++类中模拟接口的首选方法是什么?我的猜测是抽象类的多重继承.在内存开销/性能方面有什么影响?这种模拟接口是否有任何命名约定,例如SerializableInterface?
我正在学习春天.我理解依赖注入.在某些地方,我也看到它称为依赖倒置.我知道为什么它被称为注射,但是"反转"是什么意思?它实际上反转了哪种依赖?
考虑以下代码,
class Interface
{
public:
Interface(){}
virtual ~Interface(){}
virtual void method1() = 0;
virtual void method2() = 0;
};
class Concrete : public Interface
{
private:
int myMember;
public:
Concrete(){}
~Concrete(){}
void method1();
void method2();
};
void Concrete::method1()
{
// Your implementation
}
void Concrete::method2()
{
// Your implementation
}
int main(void)
{
Interface *f = new Concrete();
f->method1();
f->method2();
delete f;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在笔者使用的Interface *f = new Concrete();实例在主函数一个抽象类,后来他用delete f;,但这个问题new和delete …
我想知道如果派生类有一个没有构造函数的类是否有意义.如果没有,有没有办法以不同的方式做我想要的事情?
我的情况如下:我希望用户只使用派生类,但这些类具有共同的数据成员和方法.
编辑:由于类存在默认构造函数,这意味着用户可以直接创建Instrument的实例,那么我该怎么做我想要的呢?
class instrument{
public:
double get_price();
std::string get_udl();
private:
double m_price;
std::string m_udl;
};
class stock : public instrument{
public:
double get_dividend();
private:
double m_dividend;
};
class option : public instrument{
public:
double get_strike();
private:
double m_strike;
};
Run Code Online (Sandbox Code Playgroud)