answersLogoWhite

0


Best Answer

Operator overloading is a mechanism where a C++ developer can assign a special meaning to an operator (such as + or -, for example). This is useful, because it allows developers to create classes that can interact with other classes or primitives naturally, using the same syntax as you'd expect when working with primitives. For example, using operator overloading allows cin and cout to work "magically":

cout << "Hello World" << endl;

Even though it appears that these are just "shift operations", they take on the special meaning of outputting (for cout) and inputting (for cin) without resorting to a more cumbersome:

cout.print("Hello World\n");

This short example doesn't illustrate the savings that this syntax allows; a string of 20 variables would very nicely outline how the shift operators streamline cout.

Unfortunately, this usage is considered controversial, because it allows developers to use odd syntax. Consider the following:

Vehicle car = new Vehicle();

Velocity speed = new Velocity(15);

car += speed;

This is legal syntax with operator overloading. While it might make sense to some developers, others less familiar with a library might need to dig down into the code to make sure that the effect is what the developer intended. This can slow down development and debugging. It is this controversial usage that has prompted future languages, such as Java, to specifically exclude such functionality in an attempt to keep code as legible as possible.

User Avatar

Wiki User

11y ago
This answer is:
User Avatar
More answers
User Avatar

Wiki User

12y ago

Every operator in C++ has some precedence or priority over the other and during the execution of the code the operator with higher priority will be executed first. It is similar to the BODMAS rule in mathematics

This answer is:
User Avatar

User Avatar

Wiki User

10y ago

In truth, operator overloading is not needed per se. You can easily provide member methods and friend functions that emulate any operator.

Notable exceptions to this are the relational operators: ==, !=, <, <=, > and >=. Since comparing objects to each other is a fairly common operation these should almost always be implemented in every class. This is the downside to operator overloading since the only operator automatically provided by the compiler is the assignment operator. By rights, all seven operators should be automatically provided by the compiler, but the only implementation that would make sense for the relational operators is a member-by-member comparison, which would therefore depend upon the order the members are declared by the class.

In an ideal world, every class would be responsible for just one resource, so the point should be moot. However, this is not an ideal world; many classes simply do not adhere to the one resource rule. But C++ is nothing if not flexible, thus the programmer is given the freedom to choose which, if any, operators to provide.

The only real criteria for operator overloading is that the implementation be unambiguous and expected. The whole point of having operator overloads is to make it easier to use objects in an intuitive way. If an operator only serves to confuse your consumers, then do not provide one. In any event, all operators should either call member functions or friend functions as appropriate. Thus the operator simply serves as sugar-coating for these particular functions.

This answer is:
User Avatar

User Avatar

Wiki User

9y ago

No. The member-of (.), pointer-to-member (.*), scope resolution (::), ternary conditional (:?), sizeof and typeid operators cannot be overloaded. The standard library as well as much of the language itself is reliant upon these operators behaving in a consistent manner regardless of the types involved, thus these operators are built-in and cannot be overloaded.

This answer is:
User Avatar

User Avatar

Wiki User

10y ago

No. Operator precedence can only be changed by using parenthesis.

This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: What do you mean by operator precedence in c plus plus?
Write your answer...
Submit
Still have questions?
magnify glass
imp
Continue Learning about Engineering

What is precedence between relational operator and arithmetic operator?

Arithmetic operators (+, -, *, /, % ) have greater precedence over relational operators (&lt;, &gt;, &lt;=, &gt;=, ==, !=) in C language.


What is the C plus plus expression and operator precedence?

Precedence is determined by operators only. Every operator has a precedence in the range 1 through 17, where 1 has the highest precedence. All precedences have left-to-right associativity except 3 and 15 which are right-to-left. Precedence 1: scope-resolution operator Precedence 2: postfix increment/decrement, function-style type cast, function call, array subscripting and selection by reference or pointer. Precedence 3: prefix increment/decrement, unary plus/minus, logical and bitwise NOT, C-style cast, dereferencing, address-of, sizeof, new/new [] and delete/delete []. Precedence 4: pointer to member. Precedence 5: multiplication, division and modulo. Precedence 6: addition and substraction. Precedence 7: bitwise left/right shift. Precedence 8: relational operators (&lt;, &lt;=, &gt; and &gt;=). Precedence 9: equal/not equal operators (= and !=) Precedence 10: bitwise AND Precedence 11: bitwise XOR Precedence 12: bitwise OR Precedence 13: logical AND Precedence 14: llogical OR Precedence 15: ternary conditional, assignment and compound assignment. Precedence 16: throw Precedence 17: comma


What is the operator is used to allocate the memory in c plus plus?

calloc operator,malloc operator


Which arithmetic operator have highest precedence?

In all popular high-level programming languages, the order in which operators are interpreted ("operator precedence") is vital to ensuring that all compilers execute instructions in precisely the same manner, as the "order of operations" rule is vital in mathematics. In the case of C and C++, arithmetic operators are executed prior to logic operators. For a detailed description of operator precedence, see the related links below.


What are special operators in c plus plus?

The only "special" operators in C++ are those that cannot be overloaded. That is; the dot member operator (.), pointer to member operator (.*), ternary conditional operator (:?), scope resolution operator (::), sizeof() and typeof().

Related questions

What is the order of precedence with regard to the operator used in embedded C program?

Operator precedence in embedded C is exactly the same as in standard C.


What is precedence between relational operator and arithmetic operator?

Arithmetic operators (+, -, *, /, % ) have greater precedence over relational operators (&lt;, &gt;, &lt;=, &gt;=, ==, !=) in C language.


What is the C plus plus expression and operator precedence?

Precedence is determined by operators only. Every operator has a precedence in the range 1 through 17, where 1 has the highest precedence. All precedences have left-to-right associativity except 3 and 15 which are right-to-left. Precedence 1: scope-resolution operator Precedence 2: postfix increment/decrement, function-style type cast, function call, array subscripting and selection by reference or pointer. Precedence 3: prefix increment/decrement, unary plus/minus, logical and bitwise NOT, C-style cast, dereferencing, address-of, sizeof, new/new [] and delete/delete []. Precedence 4: pointer to member. Precedence 5: multiplication, division and modulo. Precedence 6: addition and substraction. Precedence 7: bitwise left/right shift. Precedence 8: relational operators (&lt;, &lt;=, &gt; and &gt;=). Precedence 9: equal/not equal operators (= and !=) Precedence 10: bitwise AND Precedence 11: bitwise XOR Precedence 12: bitwise OR Precedence 13: logical AND Precedence 14: llogical OR Precedence 15: ternary conditional, assignment and compound assignment. Precedence 16: throw Precedence 17: comma


What is the operator that cannot be overloaded in c plus plus and java?

conditional operator , size of operator , membership operator and scope resulation operator can not be overload in c++


What is the operator is used to allocate the memory in c plus plus?

calloc operator,malloc operator


What is the operator of power in c plus plus?

There is no "power" operator in C or C++. You need to the use the math library function pow().


Example of binaray operator in c plus plus?

+ is an example, one of many, of a binary operator in C or C++ a = b + c; // for usage example


What is the memory management operator in c plus plus?

There is no memory management operator in C++ -- it is an unmanaged language. You use the C++ new operator to allocate memory, and use the C++ delete operator to release previously allocated memory.


Which arithmetic operator have highest precedence?

In all popular high-level programming languages, the order in which operators are interpreted ("operator precedence") is vital to ensuring that all compilers execute instructions in precisely the same manner, as the "order of operations" rule is vital in mathematics. In the case of C and C++, arithmetic operators are executed prior to logic operators. For a detailed description of operator precedence, see the related links below.


Why are there 2 plus sign in c plus plus and Why not a single plus sign?

In C and in C++, the ++ operator means to increment. C++ was intended to be the next version, i.e. the incremental next step, of C, hence the use of the ++ operator.


What do the two plus stand for in C plus plus?

The ++ in C++ refers to the postfix increment operator (operator++()). It's literal meaning is "the successor to C", in reference to the C language upon which the C++ language is based.


Can the scope resolution operator be overloaded in C plus plus?

No.