003
10.11.2008, 12:06 Uhr
xyz
|
Wie würde man es mit g++ und gcc kompilieren und wie sieht der C Code aus für dieses Beispiel:
C++: |
#ifndef EXAMPLE_H #define EXAMPLE_H
class Bar { public: Bar(); Bar(const Bar&); Bar(double); Bar(double, char *); Bar(int, int); Bar(char *); Bar(long); Bar(int); Bar(Bar *);
void foo(const Bar&); void foo(double); void foo(double, char *); void foo(int, int); void foo(char *); void foo(long); void foo(int); void foo(Bar *); void spam(int x, int y=2, int z=3); void spam(double x, int y=2, int z=3); };
void foo(const Bar&); void foo(double); void foo(double, char *); void foo(int, int); void foo(char *); void foo(int); void foo(long); void foo(Bar *);
void spam(int x, int y=2, int z=3); void spam(double x, int y=2, int z=3);
#endif
|
C++: |
#include <iostream>
#include "example.h"
// Overloaded constructors for class Bar Bar::Bar() { std::cout << "Called Bar::Bar()" << std::endl; }
Bar::Bar(const Bar&) { std::cout << "Called Bar::Bar(const Bar&)" << std::endl; }
Bar::Bar(double x) { std::cout << "Called Bar::Bar(double) with x = " << x << std::endl; }
Bar::Bar(double x, char *y) { std::cout << "Called Bar::Bar(double, char *) with x, y = " << x << ", \"" << y << "\"" << std::endl; }
Bar::Bar(int x, int y) { std::cout << "Called Bar::Bar(int, int) with x, y = " << x << ", " << y << std::endl; }
Bar::Bar(char *x) { std::cout << "Called Bar::Bar(char *) with x = \"" << x << "\"" << std::endl; }
Bar::Bar(int x) { std::cout << "Called Bar::Bar(int) with x = " << x << std::endl; }
Bar::Bar(long x) { std::cout << "Called Bar::Bar(long) with x = " << x << std::endl; }
Bar::Bar(Bar *x) { std::cout << "Called Bar::Bar(Bar *) with x = " << x << std::endl; }
// Overloaded member functions void Bar::foo(const Bar& x) { std::cout << "Called Bar::foo(const Bar&) with &x = " << &x << std::endl; }
void Bar::foo(double x) { std::cout << "Called Bar::foo(double) with x = " << x << std::endl; }
void Bar::foo(double x, char *y) { std::cout << "Called Bar::foo(double, char *) with x, y = " << x << ", \"" << y << "\"" << std::endl; }
void Bar::foo(int x, int y) { std::cout << "Called Bar::foo(int, int) with x, y = " << x << ", " << y << std::endl; }
void Bar::foo(char *x) { std::cout << "Called Bar::foo(char *) with x = \"" << x << "\"" << std::endl; }
void Bar::foo(int x) { std::cout << "Called Bar::foo(int) with x = " << x << std::endl; }
void Bar::foo(long x) { std::cout << "Called Bar::foo(long) with x = " << x << std::endl; }
void Bar::foo(Bar *x) { std::cout << "Called Bar::foo(Bar *) with x = " << x << std::endl; }
void Bar::spam(int x, int y, int z) { std::cout << "Called Bar::spam(int, int, int) with x, y, z = " << x << ", " << y << ", " << z << std::endl; }
void Bar::spam(double x, int y, int z) { std::cout << "Called Bar::spam(double, int, int) with x, y, z = " << x << ", " << y << ", " << z << std::endl; }
// Overloaded global methods void foo(const Bar& x) { std::cout << "Called foo(const Bar& x) with &x = " << &x << std::endl; }
void foo(double x) { std::cout << "Called foo(double) with x = " << x << std::endl; }
void foo(double x, char *y) { std::cout << "Called foo(double, char *) with x, y = " << x << ", \"" << y << "\"" << std::endl; }
void foo(int x, int y) { std::cout << "Called foo(int, int) with x, y = " << x << ", " << y << std::endl; }
void foo(char *x) { std::cout << "Called foo(char *) with x = \"" << x << "\"" << std::endl; }
void foo(int x) { std::cout << "Called foo(int) with x = " << x << std::endl; }
void foo(long x) { std::cout << "Called foo(long) with x = " << x << std::endl; }
void foo(Bar *x) { std::cout << "Called foo(Bar *) with x = " << x << std::endl; }
// Overloaded global spam() functions void spam(int x, int y, int z) { std::cout << "Called spam(int, int, int) with x, y, z = " << x << ", " << y << ", " << z << std::endl; }
void spam(double x, int y, int z) { std::cout << "Called spam(double, int, int) with x, y, z = " << x << ", " << y << ", " << z << std::endl; }
|
|