c++语言自定义操作符,C++语言复习笔记二
C++語言復習筆記二
零.OOP
特征:抽象-封裝-繼承-多態
一.自定義數據類型
1.類
class 類名
{
private:
私有成員(本類)
public:
公共成員(所有)
protected:
保護成員(繼承類)
}
2.結構體
class 結構體名
{
private:
私有成員(本類)
public:
公共成員(所有)
protected:
保護成員(繼承類)
}
結構體默認成員public,類默認成員private
3.聯合體
union 聯合體名
{
private:
私有成員(本類)
public:
公共成員(所有)
protected:
保護成員(繼承類)
}
聯合體內所有成員不能同時存在
4.枚舉
enum class 枚舉類型名:類型
{
枚舉1,枚舉2...枚舉n
}
二.構造器
1.定義
class Demo
{
public:
//默認生成空函數體的構造器
//若自定義構造器,系統不再生成默認構造器
//若要系統生成默認構造器,指明即可
Demo()=default;
Demo(int x,int y);
private:
int x,y;
}
2.初始化
Demo(int x,int y)
{
this->x=0;
this->y=0;
}
Demo():x(0),y(0){}
2.調用
Demo():Demo(0,0){}
三.復制構造器
調用復制構造器的情況:
1.以本類對象初始化新對象
2.實參初始化形參
3.return類的對象
class Point
{
private:
int x, y;
public:
Point():x(0),y(0){}
Point(int x, int y);
Point(const Point& p);
};
Point::Point(int x, int y)
{
this->x = x;
this->y = y;
}
Point::Point(const Point& p)
{
this->x = p.x;
this->y = p.y;
cout << "復制構造函數運行中..." << endl;
}
四.析構器
class Point
{
~Point();
}
五.作用域,可見性,生存期
局部作用域:形參和代碼塊中的標識符
類作用域:類內成員
靜態生存期:與程序運行期相同(static變量)
動態生存期:從聲明開始到作用域結束
六.組合
1.初始化順序
構造構造器初始化表(按成員變量在類中的定義順序)
執行構造器體
2.類聲明
class 類名;
七.友元
1.友元函數
friend double view(const Point &p1,const Point &p2)
{
double x = p1.x - p2.x;
double y = p1.y - p2.y;
return sqrt(x * x + y * y);
}
2.友元類
class A
{
friend class B;
public:
void view() { cout << x << endl; }
private:
int x;
};
class B
{
public:
void set(int i)
{
a.x = 1;
}
void view()
{
a.view();
}
private:
A a;
};
八.繼承
1.單繼承
class 子類名:繼承方式 父類名
{
...
}
2.多繼承
class 子類名:繼承方式 父類名1,繼承方式 父類名2
{
...
}
派生類默認包含構造函數和析構函數的所有成員
3.繼承方式
方式
可訪問
public
父類的public和protected成員
protected
父類的protected成員
private
.
4.構造器,析構器
class 父親
{
public:
~父親()
{
cout << "父親析構器" << endl;
}
父親()
{
cout << "父親構造器" << endl;
}
};
class 兒子:父親
{
public:
~兒子()
{
cout << "兒子析構器" << endl;
}
兒子()
{
cout << "兒子構造器" << endl;
}
};
class 孫子:兒子
{
public:
~孫子()
{
cout << "孫子析構器" << endl;
}
孫子()
{
cout << "孫子構造器" << endl;
}
};
/*
父親構造器
兒子構造器
孫子構造器
孫子析構器
兒子析構器
父親析構器
*/
九.多態
1.虛函數
聲明"virtual 函數類型 函數名(形參列表);
作用:虛函數存在的唯一目的就是被繼承,進而實現運行時多態
class Parent
{
public:
virtual void view()
{
cout << "Are you ok" << endl;
}
};
class Child:Parent
{
public:
void view()
{
cout << "I'm very ok" << endl;
}
};
2.虛析構函數
virtual~類名();
3.純虛函數
沒有函數體的虛函數
virtual 函數名()=0;
4.抽象類
有虛函數的類為抽象類
十.運算符存重載
1.重載為成員函數
class Point
{
private:
int x, y;
public:
Point(int x, int y) :x(x), y(y){}
Point operator+(const Point &p) const;
void view();
};
Point Point::operator+(const Point& p) const
{
return Point(this->x + p.x, this->y + p.y);
}
void Point::view()
{
cout << "(" << this -> x << "," << this->y << ")" << endl;
}
2.重載為非成員函數
class Point
{
private:
int x, y;
public:
Point(int x, int y) :x(x), y(y){}
friend Point operator+(const Point& p1,const Point& p2);
void view();
};
Point operator+(const Point& p1, const Point& p2)
{
return Point(p1.x+p2.x,p1.y+p2.y);
}
void Point::view()
{
cout << "(" << this -> x << "," << this->y << ")" << endl;
}
總結
以上是生活随笔為你收集整理的c++语言自定义操作符,C++语言复习笔记二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言程序设计实验报告2,C语言程序设计
- 下一篇: c语言计算机二级资料,2016年计算机二