C 引用的好處

2021-07-15 21:09:25 字數 2873 閱讀 8785

#pragma once

#include class vector3

double y(void) const

double z(void) const

double norm(void) const;

void normalize(void);

vector3 operator+(const vector3 &v) const;

vector3 operator-(const vector3 &v) const;

vector3 operator*(const double n) const;

vector3 operator/(const double n) const;

vector3 & operator=(const vector3 &v);

friend vector3 operator*(const double n, const vector3 &v);

friend std::ostream & operator<<(std::ostream &os, const vector3 &v);

~vector3();

};

#include #include "vector3.h"

vector3::vector3()

vector3::vector3(double x,double y,double z)

vector3::vector3(const vector3 &v)

void vector3::normalize(void)

double vector3::norm(void) const

vector3 vector3::operator+(const vector3 &v) const

vector3 vector3::operator-(const vector3 &v) const

vector3 vector3::operator*(const double n) const

vector3 vector3::operator/(const double n) const

vector3 & vector3::operator=(const vector3 &v)

vector3 operator*(const double n, const vector3 &v)

std::ostream & operator<<(std::ostream &os, const vector3 &v)

vector3::~vector3()

void main(void)

vector3  norm1(vector3 v)

vector3  norm2(vector3 &v)

vector3 & norm3(vector3 &v)

vector3 norm4(vector3 * &v)

calling norm1:

copy constructor called

normalizition called

copy constructor called

destructor called

assignment operator called

destructor called

[ 0.267261 , 0.534522 , 0.801784 ]

assignment operator called

destructor called

calling norm2:

normalizition called

copy constructor called

assignment operator called

destructor called

[ 0.267261 , 0.534522 , 0.801784 ]

assignment operator called

destructor called

calling norm3:

normalizition called

assignment operator called

[ 0.267261 , 0.534522 , 0.801784 ]

calling norm4:

normalizition called

copy constructor called

assignment operator called

destructor called

[ 0.267261 , 0.534522 , 0.801784 ]

norm2函式傳遞引用型別,返回值型別。過程如下:

norm3函式傳遞引用型別,返回引用型別。過程如下:

可以發現傳遞變數的引用+返回變數引用最省資源。c++引用的效率比c語言指標的效率高,有木有!不過呢,引用必須經過初始化才能使用,意味著傳遞和返回某變數的引用之前,該變數的位址已經確定。c語言中普遍傳遞指標,指標儲存著變數的位址,函式通過位址來訪問或修改原變數。其實,大部分情況下(下一段講例外)變數在棧中的位址在定義時就已經確定了,呼叫函式時可以根據棧頂指標推算出此變數的真實位址,也就沒必要傳遞該變數的位址了。

而new和malloc動態建立物件返回的是指標,此指標的位址固定,但指標儲存的物件的位址是不確定的,所以只能通過指標來傳遞此類物件。然後呢,既然指標的位址固定,也就可以傳遞這個指標的引用。如norm4函式。

C語言列舉的好處

列舉的好處 列舉是 c 語言中的一種基本資料型別,它可以讓資料更簡潔,更易讀。列舉語法定義格式為 enum 列舉名 接下來我們舉個例子,比如 一星期有 7 天,如果不用列舉,我們需要使用 define 來為每個整數定義乙個別名 define mon 1 define tue 2 define wed...

定義介面型別的引用變數有什麼好處

面向介面程式設計 1,在定義乙個引用變數時,心裡想的應該是 我在這裡需要乙個什麼樣的功能。我是因為需要什麼功能才建立變數的,介面定義了功能的集合!所以我應該是用介面來定義這個引用變數嘛!2,定義好了引用變數以後,要讓它引用乙個物件,這個物件就應該是實現了那個介面的類的例項了。隨便乙個類,只要它繼承實...

定義介面型別的引用變數有什麼好處

1,在定義乙個引用變數時,心裡想的應該是 我在這裡需要乙個什麼樣的功能,我是因為需要什麼功能才建立變數的 介面定義了功能的集合 所以我應該是用介面來定義這個引用變數嘛 2,定義好了引用變數以後,要讓它引用乙個物件,這個物件就應該是實現了那個介面的類的例項了 隨便乙個類,只要它繼承實現了那個介面,那麼...