Wednesday 4 April 2007 @ 9:04 pm
Bjarne Stroupstrup, the inventor of the C++ programming language, has an interesting technical FAQ about C++. He has an example in the FAQ that inspired me to try this out in C++, Java and C#. Have a look at the following C++ code. What do you think this prints?
(NOTE: The C++ code looks a bit weird. I had to replace the angle brackets with ‘[’ and ‘]’ because the WordPress editor does not let me enter angle brackets properly, even if I edit the HTML code manually…).
#include [iostream] // NOTE: Use angle brackets here
class Super {
public:
void method(int i) {
std::cout [[ "method(int): " [[ i [[ std::endl; // NOTE: Use angle brackets here
}
};
class Sub : public Super {
public:
void method(double d) {
std::cout [[ "method(double): " [[ d [[ std::endl; // NOTE: Use angle brackets here
}
};
int main(int argc, char* argv[]) {
Sub obj;
// Which method is called for each of these statements, the int or the double version?
obj.method(10);
obj.method(3.2);
return 0;
}
Here is the Java version. What do you think this prints? Do you think Java works the same as C++ or not?
class Super {
public void method(int i) {
System.out.println("method(int): " + i);
}
}
class Sub extends Super {
public void method(double d) {
System.out.println("method(double): " + d);
}
}
public class Main {
public static void main(String[] args) {
Sub obj = new Sub();
// Which method is called for each of these statements, the int or the double version?
obj.method(10);
obj.method(3.2);
}
}
And lastly the C# version. What do you think - does C# work the C++ or the Java way, or is it the same - or different?
namespace Example {
class Super {
public void method(int i) {
System.Console.WriteLine("method(int): " + i);
}
}
class Sub : Super {
public void method(double d) {
System.Console.WriteLine("method(double): " + d);
}
}
class Program {
static void Main(string[] args) {
Sub obj = new Sub();
// Which method is called for each of these statements, the int or the double version?
obj.method(10);
obj.method(3.2);
}
}
}
— By Jesper de Jong Comments (3) PermaLink