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=,int x = , int j = );
void fun(double i, double j);
int main()
{
//Default Value aus Funktion
fun();
fun();
fun(,);
fun(, , );
//Function overloading
fun(1.1, 1.2);
system("pause");
return ;
} 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[];
if (NULL == p)
{
system("pause");
return ;
}
p[] = ;
p[] = ;
cout << p[] << "," << p[] << endl;
delete []p;
p = NULL;
system("pause");
return ;
}

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 = ;
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("");
t1.setAge();
cout << t1.getName() << " " << t1.getAge() << " " << endl;
system("pause");
return ;
}

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 ;
}

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;
}

Objekt Orientierte Programmierung C++的更多相关文章

  1. APS审核经验+审核资料汇总——计算机科学与技术专业上海德语审核

    1.APS是什么 德国驻华使馆文化处留德人员审核部(简称APS)成立于2001年7月,是由德国驻华使馆文化处和德意志学术交流中心(DAAD)在北京共同合作成立的服务机构. APS是中国学生前往德国留学 ...

  2. Delphi - GetUserNameEx(学一下导出Windows API,以及Array Char充当缓冲区的用法,下标必须从零开始)

    (* * Author : http://www.michael-puff.de * Date : 2006-03-29 * License : PUBLIC DOMAIN *) function G ...

  3. 10 Project 1: Erste Schritte in Python

    10 Project 1: Erste Schritte in PythonAnimationIn den Projekten werden sie nicht nur statische Objek ...

  4. S/4 HANA中的MATDOC和MATDOC_EXTRACT

    最近做了销售和物料管理方面的一些需求,因此对S/4中的MM的数据模型有了一定的了解.目前网络已经有一些介绍物料凭证表MATDOC的文章,内容好像不是很详细,另外也没发现介绍库存变更数据表MATDOC_ ...

  5. nagios监控mysql

    在nagios上部署check_mysql_health 监控mysql 博客分类: 架构   本监控为基于nagios服务器主动监控方法,利用check_mysql_health实现多种监控模式:  ...

  6. Entwurfsmuster

    1 Entwurfsmuster 1.1 Das Begriff Entwurfsmuster (englisch design patterns) sind bewährte Lösungsscha ...

  7. WEB Front-end Development Technology

    1.Einführung der HTML(Hypertext Markup Language) 1.1 Grundlegendes Label 1.1.1 Block Label <h1> ...

  8. Abschlussarbeit:Konstruktion und Implementierung von Dota2 Datenbank Intelligent Verwaltungsplatfom

    1.Die Hintergrund und Bedeutung des Themas Dank nicht ausreichendes Erkenntnisse der Spielplanner un ...

  9. Android Anwendungsprogramm Entwicklung

    1.Einführung des Androids 1.1 Grundlage der Anwendung Activity ist eine Spezifische Bespiel von Andr ...

随机推荐

  1. 如何彻底删除TFS的工作项字段

    TFS的工作项字段可以在所有工作项类型之间共享.例如自定义了一个字段"验证迭代"(Mycompany.IterationValidation)那么在需求.Bug中都可以添加这个字段 ...

  2. easyui - using

    using 是 easyloader.load 简写                  using('calendar', function()  { alert("加载calendar成功 ...

  3. asp.net MVC设计模式中使用iTextSharp实现html字符串生成PDF文件

    因个人需求,需要将html格式转换成PDF并加上水印图片.于是乎第一次接触这种需求的小菜鸟博主我,在某度搜索引擎上不断的查阅关键字资料.踩坑,终于有了一个相应的解决方案.以下是解决步骤,记录下来方便以 ...

  4. C# 使用ProcessStartInfo调用exe获取不到重定向数据的解决方案

    emmmmm,最近在研究WFDB工具箱,C语言写的,无奈本人C语言功底不够,只想直接拿来用,于是打算通过ProcessStartInfo来调取编译出来的exe程序获取输出. 一开始就打算偷懒,从园子里 ...

  5. SharePoint Adventures : Using Claims with Reporting Services

    Cannot convert claims identity to a windows token.  This may be due to user not logging in using win ...

  6. ClamAV学习【8】——64位Windows7下编译运行实践

    之前用SourceInsight静态分析了ClamAV引擎源码,现在打算开始动态研究下.不过出师不利,一开始就遇到纠结的问题,能力还有待提高. 从官网下了一个VS2005工程的源码包(http://d ...

  7. 【OCP-12c】2019年CUUG OCP 071考试题库(74题)

    74.View the exhibit and examine the structure of ORDERS and CUSTOMERS tables. ORDERS Name     Null?  ...

  8. 【OCP-12c】CUUG 071题库考试原题及答案解析(23)

    23.choose the best answer View the Exhibits and examine PRODUCTS and SALES tables. You issue the fol ...

  9. json相关知识

    整理json相关知识: 1.for in 循环获取json中的键(key)与值(value) <!DOCTYPE html> <html lang="en"> ...

  10. ELK安装成windows服务

    一.Elasticsearch安装成windows服务 我的es所在路径为:D:\ELK5.5.0\elasticsearch-5.5.0 Java 安装目录为:C:\Program Files\Ja ...