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; }
作者:Rest探路者
出处:http://www.cnblogs.com/Java-Starter/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意请保留此段声明,请在文章页面明显位置给出原文连接
Github:https://github.com/cjy513203427
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?