面向對象編程介紹
1.什麼是面向對象
面向將系統看成通過交互作用來萬恆特定功能的對象的集合。每個對象用自己的方法來管理數據。也就是說只有對象內部的代碼能夠操作對象內部的數據
2.面向對象的優點
通過,繼承、封裝、多態降低程序的耦合度,並結合設計模式讓程序更容易修改和擴展,並且易於複用。
3.面向對象的特點
① 封裝——維護性
② 繼承——複用性
③ 多態——擴展性
④ 抽象
類與對象
1.類的聲明
class Test
{
public:
公有成員(外部接口):對外可以訪問
private:
私有成員:不能在類外訪問
protect:
保護成員:不能在類外訪問
};
2.成員函數
類內實現的方法默認爲inline函數
Test.h
#ifndef _TEST_H_
#define _TEST_H_
class Test
{
pubilc:
int x_;
void initXYZ(int x, int y, int z);
void displayXYZ();
protected:
int y_;
private:
int z_;
};
Test.cpp
#include “Test.h”
#include <iostream>
void Teat::initXYZ(int x, int y, int z)
{
x_=x;
y_=y;
z_=z;
}
void Test:display()
{
cout x_<<”\ny_”<<”\nz_”<<endl;
}
Main.cpp
#include <iostream>
#include “Test.h”
int main()
{
Test t;
t.x_ = 5;
t.initXYZ(1,2,3);
t.displayXYZ();
return 0;
}
3.class VS struct
class數據成員默認私有
struct數據成員默認公有
class與struct一樣遵循字對齊,大小隻與成員有關,方法是共享在同一段空間中
4.對象的存儲模型
this指針自動傳參
Test *t1 = new Test();
t1->initXYZ(1,2,3);
調用時自動傳輸this指針,保存對象的地址
5.類的作用域
在A.h中調用B的類:
① 可用#include “B.h”
② 可以前向聲明
A.h
#ifndef _A_H_
#define _A_H_
//#include "B.h"
class B;
class A
{
public:
A();
~A();
private:
B *b;
};
#endif
6.嵌套類(內部類)
class A
{
public:
int x_;
class Inner:
{
public:
int num;
func;
};
};
7.局部類
class LoclClass
{
func()
{
...........
}
};
局部類只在定義它的局部域內可見。
局部類的成員函數必須被定義在類體中
局部類中不能有靜態成員