zoukankan      html  css  js  c++  java
  • Objekt Orientierte Programmierung C++

    1.Funtion Overloading

    C++ erlaubt,dass einige Funktion gleiches Names deklariert wird.Der Formale Parameter der Funktion müssen unterschidlich sein.Das heißt,Zahl,Typ und Reihenfolge des Parameters kann nicht unterschielich sein

    #include<stdlib.h>
    #include<iostream>
    using namespace std;
    void fun(int i=30,int x = 10, int j = 20); void fun(double i, double j); int main() { //Default Value aus Funktion fun(); fun(100); fun(100,200); fun(100, 200, 300); //Function overloading fun(1.1, 1.2); system("pause"); return 0; } void fun(int i, int j, int k) { cout << i << "," << j << "," << k << endl; } void fun(double i, double j) { cout << i << "," << j << endl; }

    2.Speicherverwaltung

    Falls wir eine Zeiger deklarieren,nach Programm fertig gemacht ist,sollen wir Zeiger löschen

    #include<stdlib.h>
    #include<iostream>
    using namespace std;
    
    int main() 
    {
        int*p = new int[1000];
        if (NULL == p)
        {
            system("pause");
            return 0;
        }
        p[0] = 10;
        p[1] = 20;
        cout << p[0] << "," << p[1] << endl;
        delete []p;
        p = NULL;
        system("pause");
        return 0;
    }

    3.Objektorientierte Programmierung

    Die Grundidee besteht darin, die Architektur einer Software an den Grundstrukturen desjenigen Bereichs der Wirklichkeit auszurichten, der die gegebene Anwendung betrifft. Ein Modell dieser Strukturen wird in der Entwurfsphase aufgestellt. Es enthält Informationen über die auftretenden Objekte und deren Abstraktionen, ihre Typen. Die Umsetzung dieser Denkweise erfordert die Einführung verschiedener Konzepte, insbesondere Klassen, Vererbung, Polymorphie .

    Teacher.h

    #pragma once
    #include <string>
    
    using namespace std;
    class Teacher
    {
    public:
        Teacher();
        Teacher(string nmae,int age);
        void setName(string _name);
        string getName();
        void setGender(string gender);
        string getGender();
        void setAge(int _age);
        int getAge();
        void teach();
    private:
        string m_strName;
        string m_strGender;
        int m_iAge;
    };

    Teacher.cpp

    #include "Teacher.h"
    #include <string>
    #include<iostream>
    using namespace std;
    Teacher::Teacher()
    {
        m_strName = "Jim";
        m_iAge = 5;
        cout << "Teacher()" << endl;
    }
    Teacher::Teacher(string name, int age)
    {
        m_strName = name;
        m_iAge = age;
        cout<<"Teacher(string name, int age)"<<endl;
    }
    void Teacher::setName(string _name)
    {
        m_strName = _name;
    }
    
    string Teacher::getName()
    {
        return m_strName;
    }
    
    void Teacher::setGender(string _gender)
    {
        m_strGender = _gender;
    }
    
    string Teacher::getGender()
    {
        return m_strGender;
    }
    void Teacher::setAge(int _age)
    {
        m_iAge = _age;
    }
    
    int Teacher::getAge()
    {
        return m_iAge;
    }
    
    void Teacher::teach()
    {
        cout << "上课了.." << endl;
    }

    main.cpp

    #include<iostream>
    #include<stdlib.h>
    #include<string>
    #include "Teacher.h"
    using namespace std;
    
    int main()
    {
        Teacher t1;
        t1.setName("11");
        t1.setAge(16);
        cout << t1.getName() << " " << t1.getAge() << " " << endl;
        system("pause");
        return 0;
    }

    4.Grammatik

    4.1 Namensraum(Namespace)

    Vereinfacht bedeutet dies, dass innerhalb eines solchen Raumes jeder Name eindeutig ein Objekt bezeichnet.

    #include <stdlib.h>
    #include <iostream>
    
    using namespace std;
    
    namespace A 
    {
        int x = 1;
        void fun() 
        {
            cout << "A" << endl;
        }
    }
    
    namespace B
    {
        int x = 2;
        void fun() 
        {
            cout << "B" << endl;
        }
        void fun2()
        {
            cout << "2B" << endl;
        }
    }
    using namespace B;
    int main() {
        cout << A::x << endl;//Man kann auf x aus Namensraum A zugreifen
        B::fun();//Man kann fun() aus Namensraum B benutzen
        B::fun2();
        system("pause");
        return 0;
    }

    4.2 Destructor Function

    Falls wir Zeiger löschen,dann wird Destructor Function verwendet

    4.3 Virtual Destructor Function

    Wenn wir Destructor Function der Unterklasse verwenden,können wir virtual vor dem Funktion hinzufügen

    4.4 Vererbung

    Die Vererbung dient dazu, aufbauend auf existierenden Klassen neue zu schaffen, wobei die Beziehung zwischen ursprünglicher und neuer Klasse dauerhaft ist

    4.5 Virtuelle Vererbung

    Wenn a Basisklasse ist,b und c ist Unterklasse von a,d ist Unterklasse von b und c.Das heisst,es gibt bei Klasse d zwei gleiche Daten und Funktion der Klasse a

    Virtuelle Vererbung kann sie verhindern

    class b:virtual public a
    class c:virtual public a

    4.6 Initialisierungsliste

    Sie kann Variable von Zitierung order Const initialisieren

    Teacher(string name = "Jim", int age = 1,int m = 100);
    Teacher::Teacher(string name,int age,int m):m_strName(name),m_iAge(age),m_iMax(m) { cout << "" << endl; }

    4.7 Copy Constructor

    Man kann einen Constructor kopieren

    Teacher::Teacher(const Teacher&tea)
    {
        cout << "Teacher(const Teacher&tea)" << endl;
    }

     main.cpp

    #include<iostream>
    #include<stdlib.h>
    
    #include<string>
    #include "Teacher.h"
    using namespace std;
    
    
    void test(Teacher t)
    {
    
    }
    
    //拷贝构造函数只有拷贝和传递参数才会调用
    int main()
    {
        Teacher t1;
        Teacher t2 = t1;
        Teacher t3(t1);
        Teacher t4;
        //test(t4);
        cout << t1.getName() << " " << t1.getAge() << " " << endl;
        system("pause");
        return 0;
    }

    4.8 "this" Zeiger

    "this" Zeiger kann Mitgliedsvariable und externe Variable unterscheiden

    this->n = n

    Array.h

    #pragma once
    class Array
    {
    public:
        Array(int len);
        ~Array();
        Array *setLen(int len);
        int getLen();
        Array *printInfo();
    private:
        int len;
    };

    Array.cpp

    #include<iostream>
    #include "Array.h"
    using namespace std;
    Array::Array(int len)
    {
        this->len = len;
        cout << "Array(int len)" << endl;
    }
    
    Array::~Array()
    {
    
    }

    //Gleiche Auswirkung
    //如Array Array::setLen(int len){return *this} Array *Array::setLen(int len) { this->len = len; return this; } int Array::getLen() { return len; } Array *Array::printInfo() { //cout << "len="<<len << endl; cout << this << endl; return this; }
  • 相关阅读:
    cass9.1打开程序错误——加载arx失败
    c#类型和变量
    AutoCAD启动缓慢
    XAML特殊字符
    静态GPS时间修改
    AutoCAD的IntersectWith方法
    Visual studio2010开发AutoCAD2008、2006 启动调试问题
    安装CAD2006装好了为什么不能用,显示系统错误无法启动此程序,因计算机丢失aclst.dll。尝试重新安装该程序以解
    安装AutoCAD2006时,提示已终止安装
    CASS 2008的野外操作码
  • 原文地址:https://www.cnblogs.com/Java-Starter/p/9800811.html
Copyright © 2011-2022 走看看