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=,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++的更多相关文章
- APS审核经验+审核资料汇总——计算机科学与技术专业上海德语审核
1.APS是什么 德国驻华使馆文化处留德人员审核部(简称APS)成立于2001年7月,是由德国驻华使馆文化处和德意志学术交流中心(DAAD)在北京共同合作成立的服务机构. APS是中国学生前往德国留学 ...
- Delphi - GetUserNameEx(学一下导出Windows API,以及Array Char充当缓冲区的用法,下标必须从零开始)
(* * Author : http://www.michael-puff.de * Date : 2006-03-29 * License : PUBLIC DOMAIN *) function G ...
- 10 Project 1: Erste Schritte in Python
10 Project 1: Erste Schritte in PythonAnimationIn den Projekten werden sie nicht nur statische Objek ...
- S/4 HANA中的MATDOC和MATDOC_EXTRACT
最近做了销售和物料管理方面的一些需求,因此对S/4中的MM的数据模型有了一定的了解.目前网络已经有一些介绍物料凭证表MATDOC的文章,内容好像不是很详细,另外也没发现介绍库存变更数据表MATDOC_ ...
- nagios监控mysql
在nagios上部署check_mysql_health 监控mysql 博客分类: 架构 本监控为基于nagios服务器主动监控方法,利用check_mysql_health实现多种监控模式: ...
- Entwurfsmuster
1 Entwurfsmuster 1.1 Das Begriff Entwurfsmuster (englisch design patterns) sind bewährte Lösungsscha ...
- WEB Front-end Development Technology
1.Einführung der HTML(Hypertext Markup Language) 1.1 Grundlegendes Label 1.1.1 Block Label <h1> ...
- Abschlussarbeit:Konstruktion und Implementierung von Dota2 Datenbank Intelligent Verwaltungsplatfom
1.Die Hintergrund und Bedeutung des Themas Dank nicht ausreichendes Erkenntnisse der Spielplanner un ...
- Android Anwendungsprogramm Entwicklung
1.Einführung des Androids 1.1 Grundlage der Anwendung Activity ist eine Spezifische Bespiel von Andr ...
随机推荐
- TSQL--集合处理
UNION ALL 返回两个结果集中所有的行,返回结果集中会存在重复行 UNION 返回两个结果集中去重的行,返回结果集中无重复行 INTERSECT 返回两个结果集都有的行,返回结果集中无重复行 E ...
- 查看JVM
通过jconsole.exe来查看,jconsole.exe所在目录为/%JAVA_HOME%/bin/jconsole.exe 需要配置: -Dcom.sun.management.jmxrem ...
- Jenkins启动Tomcat时提示Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
Jenkins构建提示: [SSH] executing...Neither the JAVA_HOME nor the JRE_HOME environment variable is defi ...
- ASP.NET MVC5实现伪静态
目录 1.什么是伪静态?为什么要实现伪静态? 2.实现APS.NET MVC伪静态的方式有哪些? 3.那么如何实现使用ASP.NET MVC5的伪静态呢? (1)在路由注册中启用特性路由 (2)为需要 ...
- 兼容性测试中如何切换和管理多个JDK版本
本文由作者邹珍珍授权网易云社区发布. 一.测试背景: 项目对外提供JAR包,需要测试该JAR包对不同JDK版本(1.6至1.9版本)的兼容性.下面主要介绍在兼容性测试中,JDK多版本共存时如何配置环境 ...
- python中的循环和编码,运算符, 格式化输出
1.while循环 现在让我们来看看python中的while循环 格式为 while 条件 循环体 (break) (continue) 中断循环的关键字有break和continue, brea ...
- ROS(URDF机器人建模)
新建功能包mbot_description 在功能包下新建文件config,launch,meshes,urdf. 在launch文件夹下新建文件display_mbot_base_urdf.laun ...
- 点击文字,把input type="radio"也选中
本文原文地址:https://my.oschina.net/jack088/blog/469815 1. <label> <input type="radio" ...
- google Agent
一句话:改HOSTS文件 有时候要查看appengine.google.com的后台,但死活上不去,怎么办?还是那个老办法: 1.在cmd下Ping www.google.com.hk,获得IP地址, ...
- 手动抠下的wordpress登录页面样式
CSS文件 login.css body, html { height: 100%; margin: 0; padding: 0; } html[Attributes Style] { -webkit ...