Q:

Is it technically correct to say variables and constants are objects of data types?

Can one say Variables and constants are objects of data types ?
I wonder what would be the proper explanation for this
int a;

float f;

Here, Can we say a is an object of type int and f is an object of type float?

A:

Yes
Per paragraph §1.8, both a and b are objects of their corresponding types.

1 An object is a region of storage. [Note: A function is not an object,
  regardless of whether or not it occupies storage in the way that
  objects do. —end note ] An object is created by a definition (3.1), by
  a new-expression (5.3.4) or by the implementation (12.2) when needed.
  The properties of an object are determined when the object is created.
  An object can have a name (Clause 3). An object has a storage duration
  (3.7) which influences its lifetime (3.8). An object has a type (3.9).
  The term object type refers to the type with which the object is
  created.
[intro.object]

and those variables fit in the above quoted definition.

A:

a and f are objects of type int and type float, respectively. Yes, that contradicts what @Patashu says, and that's because we're using different definitions of "object".
@Patashu uses the definition from object-oriented programming: an object is a thing with methods, etc. And that's perfectly fine.
However, C++ is a multi-paradigm language -- it supports more than one programming model. The C++ language definition uses the word "object" in the broader sense that compiler writers use: an object is a region of storage with various operations that can be performed on that storage. The operations are defined by the object's type. There's a well-defined set of operations that can be applied to an object of type int, so when you know that you're dealing with an int you and the compiler know what things you can do with it and, by implication, what things you can't do with it.

