預設析構函式
複製建構函式
賦值運算子
位址運算子
#ifndef zhumeng_h_
#define zhumeng_h
#include
class zhumeng
;#endif
#include"zhumeng.h"
int zhumeng::numm = 0;
zhumeng::zhumeng()
zhumeng::zhumeng(int shi, int fen, int miao)
zhumeng::zhumeng(int ****)
zhumeng::~zhumeng()
zhumeng zhumeng::operator+(zhumeng & aaa) const
std::ostream & operator
<<(std::ostream & o, const zhumeng & outp)
#include
#include"zhumeng.h"
using
namespace
std;
zhumeng operator*(int all, zhumeng all_2)
輸出的結果為:
000
left num: 2
1324
10left num: 100
0left num: 0
1324
10left num: -1
1324
10left num: -2
還有乙個問題:如果在類的函式中,某些資料是使用new delete函式進行建立的話,則需要在複製建構函式和賦值運算子中建立新的記憶體區域。如果不這樣做,則每一次呼叫析構函式的時候,刪除的都是同乙個內容(因為預設的複製和賦值函式都是這樣處理的),當乙個變數被delete兩次的時候,就會發生未知的錯誤!!切記。
2 返回指向非const物件的引用
過載《運算子(與cout一起使用)
3 返回物件
4 返回const物件
總結:如果方法或函式要返回區域性物件,則應該返回物件,而不是指向物件的引用。在這種情況下,將使用複製建構函式來生成返回的物件。如果方法或函式要返回乙個沒有公有複製建構函式的類的物件,則必須返回乙個指向這種物件的引用。如果返回引用和返回物件都可以的時候則最好使用返回引用的方法,效率會更高。
zhumeng * pointer = new zhumeng();//括號裡針對不同建構函式有不同的寫法
char * buffer = new
char[512];
zhumeng *pc3, *pc4;
pc3 = new (buffer) zhumeng();
pc4 = new (buffer + sizeof(zhumeng)) zhumeng();
pc4->~zhumeng();//釋放部分的記憶體
pc3->~zhumeng();
delete buffer;//將整個buffer都給釋放掉
zhumeng::zhumeng(int qs):shi(qs)
class
zhumeng
zhumeng::zhumeng():quan(20)
C 類和動態記憶體分配
如果有這樣的strbad類 include ifdef strbad h define srebad h class strbad endif include include stringbad.h using std cout int strbad num 0 靜態成員變數不能在宣告中初始化 除非...
類和動態記憶體分配
part 1 靜態類成員特點 無論建立了多少物件,程式都只建立乙個靜態類變數副本。也就是說,類的所有物件共享乙個靜態成員。靜態資料成員在類宣告中宣告,在包含類方法的檔案中初始化。初始化時使用作用域運算子來指出靜態成員所屬的類。但如果靜態成員是const整數型別或列舉型,則可以在類宣告中初始化。par...
類和動態記憶體分配
整理自 c primer plus vector force1 50,60 vector force2 10,70 vector max max max force1,force2 version1 vector max const vector v1,const vector v2 version...