Using Lambdas in C++: Listing 2

Function objects in C++.

// SaveFunction object as an interface.
// Interfaces in C++ are conceptual. It's not that they don't exist, but they are a special
// case of abstract classes whose methods are all pure virtual (declared as "=0" and
// therefore not defined.
class SaveFunction
{
public:
  virtual int operator()(Image image, string filepath) =0;
};

class SaveAsPNG : SaveFunction
{
public:
  int operator()(Image image, string filepath)
  {
    ...
  }
};

class SaveAsGIF : SaveFunction
{
public:
  int operator()(Image image, string filepath)
  {
    ...
  }
};

class SaveAsTIFF : SaveFunction
{
public:
  int operator()(Image image, string filepath)
  {
    ...
  }
};

class SaveAsJPG : public SaveFunction
{
public:
  int operator()(Image image, string filepath)
  {
    ...
  }
};

// These two lines instance the JPG functor and invoke it.
SaveAsJPG saveFunction;
saveFunction(im, "my_image");

About the Author

Diego Dagum is a software architect and developer with more than 20 years of experience. He can be reached at [email protected].

comments powered by Disqus

Featured

  • Microsoft Highlights Visual Studio Live! Event Lineup and Longtime Developer Community Role

    A Microsoft MVP Blog post on Visual Studio Live!'s longevity arrives as the 2026 conference series continues with upcoming stops at Microsoft HQ, San Diego and Orlando.

  • Using Local AI to Cut Copilot Usage-Based Billing Shock

    After being gobsmacked by the new billing plan using almost all my monthly credits in one or two days, I tried pushing some Copilot-style coding work onto local models in VS Code. What I found was less "free AI" and more "pick your pain": cloud charges on one side, heavy local resource use and long waits on the other.

  • .NET 11 Preview 5 Focuses on Performance, Productivity and Safer Code

    .NET 11 Preview 5 focuses on under-the-hood runtime performance gains, streamlined APIs and language features that reduce boilerplate, plus built‑in security checks and incremental ASP.NET Core and EF Core improvements aimed at everyday developer productivity.

  • VS Code 1.124 Focuses on Agent Autonomy and Parallel Sessions

    Microsoft's June 2026 VS Code update turns on Autopilot by default and adds background sending for agent sessions.

Subscribe on YouTube