C++

From XennisWiki
Jump to: navigation, search

C++ ist eine von der ISO genormte Programmiersprache. Sie wurde ab 1979 von Bjarne Stroustrup bei AT&T als Erweiterung der Programmiersprache C entwickelt. C++ ermöglicht sowohl die effiziente und maschinennahe Programmierung als auch eine Programmierung auf hohem Abstraktionsniveau. (Wikipedia, C++)

Beispielprogramm

HelloWorld.cpp

#include <iostream>
using namespace std;

int main(int argc, char** argc)
{
	cout << "Hello World" << endl;
	return 0;
}

Syntax

Kommentar

/* Kommentar
   über mehrere
   Zeilen */
// Kommentar
// über eine Zeile

Datentyp Boolean (bool)

bool b = false;
if( b ) { … }

Namensräume (namespace)

namespace A { int i = 1; void f() { cout << i << endl; } }
namespace B { int i = 2; void f() { cout << i << endl; } }

A::f(); // -> 1
B::f(); // -> 2
cout << A::i << “ “ << B::i << endl; // -> 1 2

using namespace A;
cout << i << endl; // -> 1

Konstanten (const)

const unsigned int MAX = 27; // C: #define MAX 27

Speichermanagement (new, delete)

int *p = new int[10];
delete [ ]p;
struct Data* d = new struct Data;
class Car c = new Car(“BMW“, “318i“);

Referenzen

Referenzen sind dereferenzierte Pointer.

int i = 10, i2 = i;
int &ref = i      // entspricht i = 12
int *iptr = &ref  // entspricht i = ref = *iptr = 1
int *iptr2 = &i;
void f(int f) { f = 2; } f(i);      // i bleibt unverändert ("Call By Value")
void f(int* f) { (*f) = 2; } f(&i); // i wird verändert ("Call By Reference")
void f(int& f) { f = 2; } f(i);     // i wird verändert, bessere Methode ("Call By Reference")

Funktionen

Überladen

Funktionen mit dem gleichen Namen und Rückgabetype, aber unterschiedlichen Übergabeparametern:

void print(int i);
void print(float f);
void print(char* s);

Standardparameter

void print(char* s, int color = 0, int alignment = 2);

// ...

print("a");
print("a", 16);
print("a", 10, 7);
print("a", , 7);   // <- Fehler

Klassen

class MeinKlassenName
{
    public:
      int method1();
      void another_one();
    private:
      void secret_one();
    public:
      void another_public_one();
    protected:
      void only_visible_to_inherited();
      int my_protected_state;
};

Basics

Math functions

Further information: <cmath> (math.h)

Exemplary usage of some trigonometric, power and minimum/maximum functions

include <stdio.h>
include <math.h>

// sin, cos, atan2 and sqrt
double attract_x = sin(attract_angle/180*PI) * attract_length;
double attract_y = cos(attract_angle/180*PI) * attract_length;
double total_angle = atan2(attract_x , attract_y )*180/PI;
double total_length = sqrt(attract_x*attract_x + attract_y*attract_y);

// fmin (minimum), for maximum choose fmax
int my_min = fmin(30, 70);

// abs (absolute value)
int my_abs = abs(-30);

See also

External links