友元是一種定義在類外部的普通函式或類,需要在類中宣告,基本格式為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...