C C 重要的知識點 一 const的作用

2021-06-23 09:53:47 字數 2383 閱讀 2379

c++有操作記憶體的能力,但是這也增加了出錯的機率。在增加程式的高效和程式設計的靈活性的同時,我們也要特別的關注程式的健康和穩定。

有些知識點,但在程式設計過程中容易被忽略,這種忽略一般是因為壞的程式設計習慣,並不嚴謹的程式設計模式,對於知識點的一知半解。要形成好的程式設計習慣,寫出高質量的**就必須對一些知識點有清楚的認識。

下面是我在專案中總結的一些知識點。

首先,const修飾的變數代表這個變數分配好記憶體後就應該立刻初始化,初始化以後這個變數的值就不能改變了。

這個我們拿const修飾的的常變數和巨集相比。

1.前者是變數會做格式的檢查,巨集不會做格式檢查,所以前者相對安全,減少出錯的可能。

2.程式時出錯時除錯的時候,巨集通常只會顯示具體的值而不會顯示巨集的名稱,這樣就增加了定位問題的難度。但是const修飾的常變數則和其他的變數一樣會顯示出錯的變數名,定位問題相對的容易。

其次,我們用乙個短小的程式說明const在函式中的作用。

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

3637

3839

4041

4243

4445

4647

4849

5051

5253

5455

5657

5859

6061

6263

6465

6667

6869

#include 

using

std::

string

;

class

cperson

;cperson

(***ual

***);

~cperson

(){};

void

setname

(const

string

&name

);代表的是不會改變函式呼叫的引數(引用)的值

void

printdata

()const

;代表的是此函式不會改變任何乙個成員變數的值

const

string

&getname

();代表返回的引用不能被改變 ,但是並不能返回乙個臨時的變數

private:

string

m_strname

; const

***ual

m_en***

;

public:

// 將變數宣告為public並不合適

intm_iage

; float

m_iweight

; float

m_ihight

; };

#include "a0624.h"

#include

cperson

::cperson

(***ual

***)

:m_en***

(***

){}

// cperson::cperson(***ual ***) //error 「cperson::m_en***」 const修飾的成員變數: 必須在建構函式基/成員初始值設定項列表中初始化

void

cperson

::setname

(const

string

&name

)

const

string

&cperson

::getname

()

void

cperson

::printdata

()const

//不僅宣告中要帶const,在定義的時候也要帶const

intmain

(void

)

來自code的**片

const.cpp

1.const修飾引數引用,代表的是不會改變函式呼叫的引數(引用)的值

2.const放在宣告和定義的後面,代表的是此函式不會改變任何乙個成員變數的值

3.const修飾返回的引用,代表返回的引用不能被改變 (函式不能返回乙個臨時的變數作為引用,引用的本質是位址)

有關const的一些知識點

預設情況下,const只在檔案內有效。如果確實需要在檔案間共享,可以使用extern關鍵字 不管是定義或者宣告都需要新增 const作用到引用上,則該引用不能修改被引用的值。初始化對const的引用 編譯器會將上述 變成如下形式 為了確保型別一致 我們設想如果沒有const時,若是將引用繫結到乙個臨...

JSP重要知識點

場合 頁面本身有中文的時候 解決辦法 servlet resp.setcontenttype text html charset gbk jsp page contenttype text html charset gb2312 注意 一定要寫在printwriter out resp.getwri...

JDBC重要知識點

1.cachedrowset 可以快取查詢到的結果集,即使你關閉流資源,依然可以使用結果集,還可以實現分頁功能 public cachedrowset pagequery string sql,int pagesize,int page throws exception 呼叫分頁結果 cachedr...