Consider a c++ template funtion
template<class T>
T& Add(T a, T b){return a+b ;}
if this function is called as
T c = Add("SAM", "SUNG");
what will happen? What is the problem in the template
declaration/ How to solve the problem.
Answer Posted / skc
The error is adding Two pointers isn't alowed in C/C++.
The compiler imlicitly treats "SAM" as const char*. We need
to write a function with "explicit" keyword declaration like
explicit char * Add (const char* x1, const char* x2)
{
// check for null pointers.
// allocate strlen(x1)+strlen(x2)+1 using malloc
// say char*a1 = malloc...;
// check if malloc returns null..take corrective actions
// strcpy (a1, x1);
// strcat (a1, x2);
//strcat (a1, '\0');
return a1; // ask the caller to free the memory allocated
// for a1
}
since this function is writen explicit the compiler will
invoke this function and not call the default template
function.
this is what appears to me. haven't coded and verified.
// Regards, SADIQ
| Is This Answer Correct ? | 4 Yes | 4 No |
Post New Answer View All Answers
Explain the problem with overriding functions
What is c++ array?
How do you define/declare constants in c++?
Why is c++ still best?
What is scope resolution operator in c++ with example?
When the constructor of a base class calls a virtual function, why doesn't the override function of the derived class gets called?
Can circle be called an ellipse?
Does a derived class inherit or doesn't inherit?
How does class accomplish data hiding in c++?
Explain overriding.
Can you write a function similar to printf()?
When do we run a shell in the unix system? How will you tell which shell you are running?
What is a loop? What are different types of loops in c++?
What is class in c++ with example?
If a base class is an adt, and it has three pure virtual functions, how many of these functions must be overridden in its derived classes?