blob: 2a40f171e7ec1071975f360c988d6ad2f5d2ad1b [file]
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
class Shape {
public:
Shape(double x, double y);
virtual ~Shape();
virtual double getX() const;
double getY() const;
private:
double x_;
double y_;
};
class Drawable {
public:
Drawable();
virtual ~Drawable();
virtual int draw() const;
private:
int drawCount_;
};
class Circle : public Shape {
public:
Circle(double x, double y, double radius);
double area() const;
private:
double radius_;
};
class ColoredCircle : public Circle, public Drawable {
public:
ColoredCircle(double x, double y, double radius, int color);
int getColor() const;
private:
int color_;
};
class Square : public Shape {
public:
Square(double x, double y, double side);
double getX() const override; // override of Shape::getX
double area() const;
private:
double side_;
};
class AccessBase {
public:
int value() const;
private:
int v_ = 99;
};
class PublicDerived : public AccessBase { public: PublicDerived(); };
class ProtectedDerived : protected AccessBase { public: ProtectedDerived(); };
class PrivateDerived : private AccessBase { public: PrivateDerived(); };
class OverloadBase {
public:
OverloadBase();
virtual ~OverloadBase();
int getValue(int x);
double getValueDouble(double x);
};
class OverloadDerived : public OverloadBase {
public:
OverloadDerived();
int getValue(int x);
};
class DiamondBase {
public:
DiamondBase();
virtual ~DiamondBase();
int baseVal() const;
virtual int virtVal() const;
};
class DiamondLeft : virtual public DiamondBase {
public:
DiamondLeft();
int virtVal() const override;
};
class DiamondRight : virtual public DiamondBase {
public:
DiamondRight();
};
class DiamondDerived : public DiamondLeft, public DiamondRight {
public:
DiamondDerived();
};