time.h
#include
class
tmpclass
tmpclass
(tmpclass &tmpclass)};
class
time
;
time.cpp
#include
"time.h"
#include
//拷貝建構函式
time::
time
(const time &tmptime,
int a)
time::
time()
//賦值運算子過載
time& time::
operator=(
const time& tmpobj)
project.cpp
#include
#include
"time.h"
//兩個物件真的不能進行==比較麼?是可以比較的,我們需要「過載==運算子」
//我們寫乙個成員函式,這個成員函式名「operator==」,這個成員函式裡邊 我麼需要寫一些邏輯
//總結:
//過載運算子:本質是乙個函式。整個函式的正式名字: operator關鍵字 接 運算子
//既然過載運算子本質上是乙個函式,那麼會有返回型別和引數列表
//有一些運算子,如果我們不自己寫該運算子的過載,那麼系統會自動給我們生成乙個,比如賦值運算子的過載
void
func
(time tmptime)
time func()
intmain()
執行結果:
析構函式
//析構函式:物件在銷毀的時候,會自動呼叫析構函式。
//如果我們自己不寫自己的析構函式,編譯器也會生成乙個預設的析構函式。預設析構函式的函式體為空{},表示預設的析構函式其實沒有幹什麼
//建構函式裡new delete
//析構函式也是類的成員函式,它的名字是由 ~類名 構成,沒有返回值,不接受任何引數,不能被過載,所以乙個給定的類,只有乙個唯一的析構函式
//建構函式的成員初始化:幹了兩件事,函式體之前和函式體之中
//析構函式的成員銷毀:幹了兩個事,函式體,函式體之後
//成員變數的初始化和銷毀時機問題:先定義的先初始化,銷毀時先定義的後銷毀
int
main()
C 運算子過載賦值運算子
自定義類的賦值運算子過載函式的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與析構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子過載函式,那麼系統將會自動提供乙個賦值運算子過載函式。賦值運算子過載函式的定義與其它運算子過載函式的定義是...
C 賦值運算子過載
c 賦值運算子過載,為什麼要返回引用?查了許多資料,基本有兩種說法 一 c c 賦值運算子的本意為 返回左值的引用 左值 賦值號左面的變數而非其值 可用以下程式段測試 int a,b 3,c 2 a b c cout 對於x y x,y均為物件時 若不返回左值的引用,將會生成臨時物件。如果不處理x ...
C 過載賦值運算子
c 類建立時,會產生乙個預設的賦值運算子函式 a operator const a 普通類例項之間賦值可能沒問題,但當類成員變數中有指標引用的動態記憶體時,複製後只是簡單地將指標值複製,而沒有將其指向的動態記憶體也拷貝乙份,這樣即多個類例項內的指標指向同一動態記憶體,當類例項析構時,會導致這塊動態記...