C 類和動態記憶體分配

2021-08-15 09:16:08 字數 1929 閱讀 1399

預設析構函式

複製建構函式

賦值運算子

位址運算子

#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...