物件的生成方式

2021-06-23 06:33:54 字數 1127 閱讀 7012

物件的生成方式

拷貝建構函式:用乙個已經存在的物件初始化另乙個物件時,用到拷貝建構函式。

如:class a;

a a1;

a a2=a1;//這裡就用到拷貝建構函式

另外:在傳入引數和return返回時,以傳值方式傳遞,需要呼叫拷貝建構函式。

需要注意的兩種情況:

(1)

a a1;

a a2;

a2=a1;

並沒有用拷貝建構函式,而是賦值函式。因為不是「初始化」

(2)#include using namespace std;

class a

{private:

int i;

public:

a(){ i=0;

cout<<"無引數的建構函式"<

建構函式

建構函式

析構函式

析構函式

之所以沒有呼叫拷貝建構函式,是因為a a2=a(1);中,a(1)是乙個臨時物件,不是已經存在的物件,因此直接呼叫建構函式,而並沒有生成乙個無名物件。相當於a a2(1);

如果函式返回的是無名物件,則根據主調函式的接收情況,出現兩種情形:

1、主調函式正好要利用函式的返回值構造乙個新的有名物件,這時沒有必要再被調函式中產生臨時物件,而是直接在被調函式返回之前構造出主調函式中的那個接收物件即可。

#include using namespace std;

class a

{private:

int i;

public:

a(){ i=0;

cout<<"無引數的建構函式"<

建構函式

析構函式

2、不是用來構造乙個新的有名物件

#include using namespace std;

class a

{private:

int i;

public:

a(){ i=0;

cout<<"無引數的建構函式"<

建構函式

建構函式

賦值函式

析構函式

析構函式

主鍵生成方式

在做搭建ssh專案時,用hibernate反射機制生成pojo以及對映檔案。表主鍵選擇的是uuid,但是程式執行過程中,就報錯了。結果查資料才發現一些問題。大家平時多注意點。在hibernate2.1中,主鍵生成策略中uuid分為uuid.hex和uuid.string,但是從hibernate3....

GUID生成方式

uniqueidentifier guid 字段 在ms sql 資料庫中可以在建立表結構是指定字段型別為uniqueidentifier,並且其預設值可以使用newid 來生成唯一的guid 全域性唯一識別符號 使用newid生成的比較隨機,如果是sql 2005可以使用newsequential...

核心 bzimage 的生成方式

在編譯kernel的時候,會編譯出乙個bzimage的檔案,據說這個是可以引導的檔案?恩,關於這個問題,昨天我還真好好看了一下,發現還真是。玩了核心這麼多年,一直都以為是根目錄下的那個vmlinux是安裝時拷貝到 boot 目錄下的檔案,結果原來不是。真是慚愧慚愧。我是從make install這個...