1. 程式人生 > >條款1:仔細區別points和refrences

條款1:仔細區別points和refrences

指標和引用主要有三個區別。

1:引用必須初始化,但是指標可以為null

	int* a = NULL;
	int &b;//這裡報錯
	int c = 10;
	int &d = c;

2:使用引用可能會比使用指標更有效率

主要原因是使用引用之前不需要測試其有效性。

void printDouble(const double &a)
{
	cout << a << endl;
}
void printDouble(const double *a)
{
	if (a)
	cout << *a << endl;
}

相同的功能,上面的a可以保證肯定是double型別,但下面的a可能是NULL;這裡又多了一步。

3:指標可以指向另一個物件,但是引用永遠代表最初獲得的物件

	string s1("Nancy");
	string s2("Clancy");

	string &rs = s1; //rs 代表 s1
	string *ps = &s1;//ps 指向 s1


	rs = s2; // rs 仍然代表s1,但是s1的值變成了"Clancy"
	ps = &s2;// ps 現在指向s2,s1沒有變化

相關推薦

條款1仔細區別pointsrefrences

指標和引用主要有三個區別。 1:引用必須初始化,但是指標可以為null。 int* a = NULL; int &b;//這裡報錯 int c = 10; int &d =

ELK-學習-1elasticsearch6.3安裝配置

home true 地址 修改配置 iss HA 5.2.1 oop bubuko 安裝elacticsearch: 1,安裝jdk 要求1.8以上 2,安裝elacticsearch rpm –ivh https://artifacts.elastic.co/downl

第二章1文件操作函數

條件語句 info 文件操作 寫入 分享 查看文件內容 文本編輯器 inf 三目運算 三元運算符:又稱三目運算,就是對簡單的條件語句的簡寫 簡單條件語句:if.....else 轉換成三元運算:val 文件處理:怎麽查看文件內容 1,首頁我要有個文本編輯器 2

effective c++條款34區分介面繼承實現繼承

1. 純虛擬函式也可以有具體實現 #include <iostream> using namespace std; class Airplane { public: virtual void fly(const char *)const = 0; }; void Airplan

條款1視C++為一個語言聯邦。

C++是一個如此複雜的語言,可以分解為4大部分:1.C語言:比如內建資料型別,陣列,指標,預處理,語句等內容均來源於C。2.面向物件的C++:類、建構函式,解構函式,封裝,繼承,派生,多型,虛擬函式。3.泛型C++:就是使用模板程式設計。4.STL庫:各種容器,迭代器,演算法,函式物件。 &

Effective Java 第三版讀書筆記——條款8避免使用 Finalizer Cleaner 機制

Finalizer 機制通常是不可預知的、危險的、不必要的。它們的使用會導致不穩定的行為,糟糕的效能和移植性問題。從 Java 9 開始,Finalizer 機制已被棄用,但仍被 Java 類庫所使用。 Java 9 中 Cleaner 機制代替了 Finalizer 機制。 Cleaner

建議 1不要在常量變數中出現易混淆的字母

在捧讀《編寫高質量程式碼改善Java程式的151個建議》的過程中,也一一印證這自己所遇到的問題,有所感、有所悟,所以借簡書這樣一個平臺希望和大家進行分享。 包名全小寫,類名首字母全大寫,常量全部大寫並用下劃線分割,變數採用駝峰命名法(Camel Case)命名等,這些都是最基本的Java編碼規範

effective c++條款09絕不在構造析構過程中呼叫virtual函式

#include <iostream> using namespace std; class BaseClass { public: BaseClass() { cout << "BaseClass" << endl; } ~

Appium基礎總結1獲取包名Activity

主要通過cmd命令:aapt來獲取包名和Activity 1.安裝android build-tools SDK安裝目錄雙擊Manager.exe,勾選Build-tools 2.PATH配置環境變數 將SDK安裝目錄下的\Android\android-sdk\build-tools\24.0.0;新增到

演算法9-1最大流最小切割問題

最小切割問題 首先介紹什麼是切割。切割就是將一張圖中的頂點分成兩部分A和B。 接下來介紹一下什麼是容量。容量是A區到B區所有的邊權重之和。 最小切割就是求一張圖中使得容量最小的切割方式。 最小切割的應用 最小切割在國家的拆分時會用到。著名的蘇聯解體事件就是

C++11 條款1理解模板型別推導

前言 c++98有單獨一套型別推導規則:適用於函式模板。c++11修改了這套規則並且增加了兩個,一個是auto,一個是decltype。c++14擴充套件了auto和decltype使用的場景。隨著型別推導在應用程式中的使用逐步增加,你可以從那些明顯或冗餘的型別拼寫中

vue專案實踐教程1vux專案搭建簡介

vue作為比較受歡迎的前端開發框架之一,因為其優雅的程式碼結構,輕量化程式碼設計,簡介易懂的API,靈活易用的指令和屬性廣受前端開發者的喜愛,其學習成本和學習難度相對react來說要簡單很多。 這裡,筆者以一個小專案為例,向大家介紹vue的使用和開發。 在瞭

分散式系統理論基礎1 一致性、2PC3PC

狹義的分散式系統指由網路連線的計算機系統,每個節點獨立地承擔計算或儲存任務,節點間通過網路協同工作。廣義的分散式系統是一個相對的概念,正如Leslie Lamport所說[1]:What is a distributed systeme. Distribution is in the eye of the b

十九、面向物件基礎1類、__init____str__、小例子(烤地瓜相關程式;存放傢俱建立了房子類、建立了床類、沙發類)

一、類和物件的關係 面向物件程式設計的2個非常重要的概念:類和物件 物件是面向物件程式設計的核心,在使用物件的過程中,為了將具有共同特徵和行為的一組物件抽象定義,提出了另外一個新的概念——類 類就

【Spring學習筆記】1開發環境,BeanFactoryApplicationContext兩類容器

開發環境 和Struts2,Hibernate一樣把下載的jar包放在WEB-INF/lib/下就可以了,最小依賴是: 其中commons-logging-*.jar是額外的,不是Spring自帶的。 BeanFactory容器 是為依賴注入(DI)

走進JavaWeb技術世界1JavaWeb的由來基礎知識

本系列文章將整理到我在GitHub上的《Java面試指南》倉庫,更多精彩內容請到我的倉庫裡檢視 https://github.com/h2pl/Java-Tutorial 喜歡的話麻煩點下Star哈 文章首發於我的個人部落格: www.how2playlife.com 本文是微信公眾號【Java技術江

要點1指標、陣列複合字面量

# 一維陣列及其指標表示法 一維陣列: ```c int ar[] = {1,2,3} // 直接初始化,編譯器自動獲取陣列大小 int br[3] = {1,2,3} // 直接指定大小 ``` 陣列的名字ar其實是一個指標: ```c int *pr = ar; printf("%d\n

1定時器(springboot spring的區別 springboot的配置檔案不用配)

在Spring Boot中使用@Scheduled實現定時任務 之前沒有使用Spring Boot的Java風格配置的時候,用XML配置過@Scheduled定時任務,現在都習慣使用Java風格配置了,在此簡單記錄 一下Spring Boot的@Scheduled定時任務的實現過程。 1.

java面試(1) java中==equalshashCode的區別

1."=="     "=="運算子是比較兩個變數的值是否相等。也就是說,該運算子用於比較變數對應的記憶體中所儲存的值是否相等,要比較兩個基礎型別的資料或兩個引用變數是否相等,只能使用"=="運算子。     具體而言,如果兩個變數是基礎

計算機網路學習1HTTP協議中URLURI的區別

國際慣例膜dalao,dalao部落格讓我學習到了新姿勢 首先,先來了解一下這些單詞的全稱: HTTP = Hyper Text Transfer Protocol(超文字傳輸協議) URI