新聞中心
C++語(yǔ)言中,new表示什么的關(guān)鍵字?
“new”是C++的一個(gè)關(guān)鍵字,同時(shí)也是操作符關(guān)于new的話(huà)題非常多,因?yàn)樗_實(shí)比較復(fù)雜,也非常神秘,下面我將把我了解到的與new有關(guān)的內(nèi)容做一個(gè)總結(jié)。

new的過(guò)程
當(dāng)我們使用關(guān)鍵字new在堆上動(dòng)態(tài)創(chuàng)建一個(gè)對(duì)象時(shí),它實(shí)際上做了三件事:獲得一塊內(nèi)存空間、調(diào)用構(gòu)造函數(shù)、返回正確的指針當(dāng)然,如果我們創(chuàng)建的是簡(jiǎn)單類(lèi)型的變量,那么第二步會(huì)被省略假如我們定義了如下一個(gè)類(lèi)A:
class A
{
int i;
public:
A(int _i) :i(_i*_i) {}
void Say() { printf(\"i=%d\\n\", i); }
new string為什么會(huì)創(chuàng)建兩個(gè)對(duì)象?
在許多編程語(yǔ)言中,包括Java,使用new關(guān)鍵字創(chuàng)建字符串時(shí)會(huì)創(chuàng)建兩個(gè)對(duì)象的原因是字符串是不可變的。
首先,new操作符會(huì)在堆內(nèi)存中創(chuàng)建一個(gè)新的String對(duì)象,然后將字符串值存儲(chǔ)在字符串池(string pool)中。
如果字符串池中已經(jīng)存在相同值的字符串,Java會(huì)重用池中的字符串對(duì)象,而不是創(chuàng)建新的。這是為了節(jié)省內(nèi)存和提高性能。
所以,有時(shí)候使用new創(chuàng)建字符串會(huì)導(dǎo)致兩個(gè)對(duì)象的創(chuàng)建,一個(gè)在堆中,一個(gè)在字符串池中。
例如,以下代碼會(huì)創(chuàng)建兩個(gè)字符串對(duì)象:
java
String str1 = new String("Hello");
什么是工廠代碼?
工廠代碼是指一種軟件設(shè)計(jì)模式,它是一種創(chuàng)建對(duì)象的方式,通過(guò)使用工廠方法將對(duì)象的創(chuàng)建延遲到子類(lèi)中進(jìn)行。
工廠代碼的主要目的是提供一種松耦合的方式來(lái)創(chuàng)建對(duì)象,同時(shí)也可以通過(guò)工廠方法來(lái)管理和維護(hù)對(duì)象的創(chuàng)建過(guò)程。
工廠代碼的實(shí)現(xiàn)可以提高代碼的可維護(hù)性和可重用性,以及降低代碼的復(fù)雜度。在軟件開(kāi)發(fā)中,工廠代碼被廣泛應(yīng)用于對(duì)象的創(chuàng)建和管理,尤其是在大型項(xiàng)目中,工廠代碼可以提供一種簡(jiǎn)單而有效的方法來(lái)管理對(duì)象的創(chuàng)建和維護(hù)。
工廠代碼是一種軟件設(shè)計(jì)模式,它通過(guò)使用一個(gè)工廠類(lèi)來(lái)創(chuàng)建對(duì)象,而不是直接使用new操作符來(lái)實(shí)例化對(duì)象。
這種模式適用于需要?jiǎng)?chuàng)建多個(gè)相似對(duì)象或者需要根據(jù)不同情況創(chuàng)建不同對(duì)象的情況。
工廠代碼可以幫助降低代碼的復(fù)雜度,提高代碼的可維護(hù)性和可擴(kuò)展性。
它可以將對(duì)象的創(chuàng)建邏輯從客戶(hù)端代碼中分離出來(lái),使得客戶(hù)端代碼只需要與工廠類(lèi)打交道,而不需要直接與具體的對(duì)象打交道。
這種模式在很多框架和庫(kù)中都有應(yīng)用,例如Java中的JDBC和Spring框架。
工廠代碼是一種設(shè)計(jì)模式,它將對(duì)象的創(chuàng)建與使用分離,通過(guò)一個(gè)工廠類(lèi)來(lái)創(chuàng)建對(duì)象,而不是直接在代碼中創(chuàng)建。
這樣做的好處是,當(dāng)需要?jiǎng)?chuàng)建新的對(duì)象時(shí),只需要修改工廠類(lèi)而不需要修改大量的客戶(hù)端代碼,降低了代碼的耦合度和維護(hù)成本。
同時(shí),工廠模式也可以通過(guò)配置文件來(lái)指定具體創(chuàng)建哪種對(duì)象,提高了程序的靈活性和可擴(kuò)展性。工廠模式是一種常用的面向?qū)ο缶幊趟枷耄m用于大量對(duì)象的創(chuàng)建場(chǎng)景。
什么是原型和原型鏈?
原型是一個(gè)對(duì)象,是函數(shù)的一個(gè)屬性prototype;通過(guò)該函數(shù)實(shí)例化出來(lái)的對(duì)象都可以繼承得到原型上的所有屬性和方法。原型對(duì)象默認(rèn)有一個(gè)屬性constructor ,值為對(duì)應(yīng)的構(gòu)造函數(shù);另外,有一個(gè)屬性__proto__,值為Object.prototype。
原型鏈就是對(duì)象通過(guò)__proto__向當(dāng)前實(shí)例所屬類(lèi)的原型上查找屬性或方法的機(jī)制,如果找到Object的原型上還是沒(méi)有找到想要的屬性或者是方法則查找結(jié)束,最終會(huì)返回undefined。
到此,以上就是小編對(duì)于new操作符具體干了什么呢?的問(wèn)題就介紹到這了,希望這4點(diǎn)解答對(duì)大家有用。
文章名稱(chēng):new操作符具體干了什么
URL地址:http://www.5511xx.com/article/ccdohcd.html


咨詢(xún)
建站咨詢(xún)
