C 學習筆記07

2021-09-25 16:44:36 字數 3722 閱讀 4901

友元是一種定義在類外部的普通函式或類,需要在類中宣告,基本格式為friend 函式原型,友元不是成員函式,但它可以訪問類中的私有成員

存在形式

特點運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。

過載規則

不能過載的運算子

過載形式

由於現階段時間不夠,這些運算子的過載就不一一實現了,以下**是我自己用過載方式實現的乙個string類,算是乙個總結

string_operator.h

#pragma once

#include

#include

using namespace std;

class string

string &operator=

(const string& s)

; string &operator=

(const

char*)

; string &operator+=(

const string&);

string &operator+=(

const

char*)

;char

*operator[

](std:

:size_t index)

;const

char

&operator[

](std:

:size_t index)

const

; std:

:size_t size()

const

;const

char

*c_str()

const

; friend bool operator==

(const string &

,const string &);

friend bool operator!=

(const string &

,const string &);

friend bool operator<

(const string &

,const string &);

friend bool operator>

(const string &

,const string &);

friend bool operator<=

(const string &

,const string &);

friend bool operator>=

(const string &

,const string &);

friend std:

:ostream &operator<<

(std:

:ostream &os,

const string &s)

; friend std:

:istream &operator>>

(std:

:istream &is,

const string &s)

;private:

char

*_str;};

string_operator.cc

#include

"string_operator.h"

string:

:string()

//預設建構函式

:_str

(new char[1

]())

string:

:string

(const

char

*str)

:_str

(new char

[strlen

(str)+1

]())

string:

:string

(const string& s)

:_str

(new char

[strlen

(s._str)+1

]())

string::~

string()

string & string:

:operator=

(const string& s)

return

*this;

}string &string:

:operator=

(const

char

*s)string &string:

:operator+=(

const string& s)

string &string:

:operator+=(

const

char

*s)char

*string:

:operator[

](std:

:size_t index)

const

char

&string:

:operator[

](std:

:size_t index)

const

//此函式只能被const物件呼叫

std:

:size_t string:

:size()

const

const

char

*string:

:c_str()

const

bool operator==

(const string &lhs,

const string &rhs)

bool operator!=

(const string &lhs,

const string &rhs)

bool operator<

(const string &lhs,

const string &rhs)

bool operator>

(const string &lhs,

const string &rhs)

bool operator<=

(const string &lhs,

const string &rhs)

bool operator>=

(const string &lhs,

const string &rhs)

std:

:ostream &operator<<

(std:

:ostream &os,

const string &s)

std:

:istream &operator>>

(std:

:istream &is,

const string &s)

string operator+

(const string &lhs,

const string &rhs)

string operator+

(const string &lhs,

const

char

*str)

string operator+

(const

char

*str,

const string &rhs)

void

test()

intmain

(int argc,

char

*ar**)

學習筆記07

2017年9月26日 學習筆記與總結 1.盒子模型簡介 margin 當前元素和相鄰元素之間的距離 分四個方向,按順時針方向 top right bottom left 特點 1.垂直方向的相鄰元素,上下外邊距只會取最大值 2.在子元素裡新增垂直方向的外邊距,需要給父元素新增 overflow hi...

學習筆記07

概述 在程式設計中,為了方便處理資料具有相同型別的若干變數按有序形式組織起來 稱為陣列。include 變數定義 資料型別 變數 值 陣列定義 資料型別 陣列名 元素個數 int array 10 陣列 陣列下標 陣列名 下標 printf d n arr 0 printf d n arr 1 pr...

C 基礎學習筆記07 多型

1.1 多型的基本概念 多型分為兩類 靜態多型 函式過載和運算子過載 動態多型 派生類和虛函式實現執行時多型 靜態多型與動態多型的區別 靜態多型的函式位址早繫結 編譯階段確定函式位址 動態多型的函式位址晚繫結 執行階段確定函式位址 class animal class cat public anim...