我對C++編程非常陌生,並試圖理解這種多態分配的東西。我在網上進行了研究並看到了多個示例,但唯一有意義的是跟蹤非多態內存佔用空間,其中包含父類和派生類。如果你有一個父類和多個派生類,會怎麼樣?如何使用基類的指針類型變量的多態賦值在父類中調用方法。因此,使用該方法生成父類和派生類的輸出。我所要求的一切都是清晰的,你應該在書中找到,這樣我才能理解這個概念。然後我將創建我自己的測試用例。我感謝任何幫助!使用多態分配
Q
使用多態分配
1
A
回答
0
#include<iostream>
using namespace std;
class base
{
public:
int baseVariable;
base(int arg=0):baseVariable(arg) {}
virtual void print()=0;
};
class derivedOne:public base
{
public:
derivedOne(int arg=0):base(arg){}
void print()
{
cout<<"Printing with derivedOne's print function.baseVarible = "<< base::baseVariable<<endl;
}
};
class derivedTwo:public base
{
public:
derivedTwo(int arg=0):base(arg){};
void print()
{
cout<<"Printing with derivedTwo's print function.baseVarible = "<< base::baseVariable<<endl;
}
};
int main()
{
base *obj1=new derivedOne(5);
base *obj2=new derivedTwo(7);
obj1->print();
obj2->print();
return 0;
}
我想這就是你要求的。
0
這是一個很古老的,但在解釋多態分配也許闖闖(自言小心地設計在CPP模式使用Qt第二版由Alan Ezust,保羅Ezust)
比方說你有一個抽象基類:
class Shape {
public:
virtual double area() = 0;
virtual QString getName() = 0;
virtual QString getDimensions() = 0;
virtual ~Shape() {}
};
而且你必須從這個基類繼承兩個類:
class Rectangle : public Shape {
public:
Rectangle(double h, double w) : m_Height(h), m_Width(w) {}
double area();
QString getName();
QString getDimensions();
protected:
double m_Height, m_Width;
};
class Circle : public Shape {
public:
Circle(double r) : m_Radius(r) {}
double area();
QString getName();
QString getDimensions();
private:
double m_Radius;
};
,你有你的主要應用領域:本
#include "shapes.h"
#include <QString>
#include <QDebug>
void showNameAndArea(Shape* pshp) {
qDebug() << pshp->getName() << " " << pshp->getDimensions()
<< " area= " << pshp->area();
}
int main() {
Rectangle rectangle(4.1, 5.2);
Circle circle(6.1);
showNameAndArea(&rectangle);
showNameAndArea(&circle);
return 0;
}
在全局函數showNameAndArea,基類指針,pshp,依次給出三個子類對象的地址。對於每個地址分配,pshp以多態方式調用Rectangle和Circle類的正確的getName和area函數。
相關問題
- 1. Rails多態分配
- 2. 使用scanf動態分配()
- 3. 動態分配和多態 - C++
- 4. 正確使用動態分配的多維數組的memset
- 5. 允許只分配對象使用動態分配
- 6. 使用typedef動態分配矩陣
- 7. 使用malloc分配動態內存
- 8. 使用fgets +動態內存分配
- 9. 使用字符進行動態分配
- 10. 使用malloc動態分配內存()
- 11. 動態分配值使用XQuery
- 12. 使用Cython動態內存分配
- 13. 使用動態分配的矩陣
- 14. 使用set_intersection進行動態分配?
- 15. 使用指針動態分配數組
- 16. 動態分配值使用jQuery
- 17. 動態內存分配和使用C
- 18. 靜態分配與動態分配與自動分配
- 19. 多維動態數組分配
- 20. Fortran多態性,函數和分配
- 21. 分配動態多維變量
- 22. Spark Job多線程和動態分配
- 23. 在多臺機器上分配狀態
- 24. 動態分配
- 25. 動態多態和動態內存分配
- 26. 高效使用多個分配器
- 27. 使用Smarty的分配多維數組
- 28. 使用多態函數來拆分(Haskell)
- 29. 分配使用#
- 30. 如何使用動態分配而不是靜態int?
這裏有十億個這樣的例子。 –
你可以擺動我的鏈接之一,因爲我可能會誤解。看起來我一直在引擎蓋下的每一個例子,除了我需要的。 – Mikey
你可能想要考慮避免這樣的結構。 –