1樓:匿名使用者
求兩點間距離的公式用錯了,引數貌似也不對,建議改成這樣:
2樓:匿名使用者
double distance(mypoint point());
定義類內部的函式不需要構造物件,把point後面的括號去掉
double distance(mypoint point);
當然寫成更好
double mypoint::distance(class mypoint point())
這個去掉class,point後面的括號
double mypoint::distance(mypoint point)
同樣變成更好
3樓:匿名使用者
mypoint.h:
double distance(mypoint point());
改為doubledistance(mypoint point);
mypoint.cpp:
double mypoint::distance(class mypoint point())
改為doublemypoint::distance(mypoint point)
另外:這個方法的演算法不太對。
c++中關於物件作為函式形參的問題
4樓:heart浩皛
c++,類的物件作為形參時一定會呼叫複製建構函式嗎?答:如果引數是引用傳遞,則不會呼叫任何建構函式;如果是按值傳遞,則呼叫複製建構函式,按引數的值構造乙個臨時物件,這個臨時物件僅僅在函式執行是存在,函式執行結束之後呼叫析構函式。
如果類中沒有定義複製建構函式 那物件就不能作為形參?答:如果沒有定義,編譯器會自動為你定義乙個,編譯器自己定義的複製建構函式是按類成員變數的值複製的。
有幾個成員變數就重新建立乙個物件,那個物件的成員變數和被複製的物件其成員變數的值相同。這裡如果成員變數有指標的時候,就會出現多個指標指向同乙個物件的問題。
j**a 類成員變數作為函式引數的問題:
5樓:育知同創教育
private name name;
name是乙個name類。宣告name為name類。不是引用,是宣告person(name name)
name型別的name類為形參。
this.name=new name(a,b);
this指向class person。name是person類的全域性變數。在方法外宣告。
person.name=new name(a,b)開始使用name的構造方法來建立乙個name名稱的name類。
c++中物件作為函式引數傳遞的問題
6樓:夏冬琦
1.首先要明確void display(people x)是傳復值方式製傳參,實參要向形參複製物件,在複製物件時會呼叫拷貝建構函式。
2.由於people類中沒有顯式定義拷貝建構函式,將使用預設拷貝建構函式不會自動複製堆資源(即通過new得到的資源)。
3.因此void display(people x)執行時,會呼叫預設拷貝建構函式,所以x物件中的name屬性沒有賦值,指向了未知的位址,因此x.getname()會出錯。
解決的辦法有兩個:1.使用引用傳參,2.顯式定義拷貝建構函式。
c++自定義類的物件 做函式引數為什麼一定要用 引用傳值?
7樓:匿名使用者
函式引數有直接變數(如int、char、double等)型別、指標型別和引用型別。
如果引數是變數,傳遞方式是傳值,就是將實參的值複製(複製,意味著空間消耗和時間消耗)到「棧」空間中。
如果引數是指標,傳遞方式是傳址,需將指標複製(同樣也消耗空間和時間,對於陣列而言,只需儲存陣列首位址)到「棧」空間中。
如果是引用,則既不是傳值,也不是傳址,主調函式和被調函式共享引數的存放位址,與全域性變數共享方式相同。
對於拷貝(複製)建構函式而言,類物件通常需要較多的儲存空間,如果按值傳遞,必然會較大消耗「棧」空間,也需要較多的時間實施複製過程。因為複製建構函式不會修改引數的內容,也不會修改引數的屬性,所以建構函式的引數應該是常量引用傳遞,如
8樓:篤俠
不是一定要用引用。
由於物件一般都含有較多的資料成員,當其作為函式引數傳遞時,傳遞物件值的耗時要比傳遞物件位址耗時多,所以一般採用傳遞位址的方式。
使用指標也能傳遞位址,但c++引入了引用的概念之後,使用引用要比使用指標的可讀性好些。
有時,一些函式(包括拷貝建構函式)引數要求用(不是必須用)常引用,目的是為了避免函式體中無意地修改指標所指物件的值。
9樓:匿名使用者
如果引數是類物件,就是值傳遞,就要複製,複製就要調拷貝建構函式。這就形成了拷貝建構函式再調拷貝建構函式,無限遞迴下去。因此只能用引用的方法
10樓:匿名使用者
如果用傳值的方式的話會帶來拷貝的開銷
c++類成員函式能否以該類物件作為引數?
11樓:東風冷雪
void set(vector&); //這個是物件吧?在函式中形式引數是可以省略
變數名的,
比如 void change(int &,in &);
C 類型別指標陣列,C , 動態指標陣列作為類的成員,如何分配空間
c 不支援動態陣列,陣列在編譯時就已經被分配了記憶體,因此不能夠使用變數作為陣列定義時的大小。把private改為public,先定義乙個物件,再賦值 a obja header msg 0 ai header msg 1 vi header msg 2 oi pp p m 是錯的,陣列的長度必須為...
C關於類的繼承, C C 關於類的繼承
s2.methoda 錯誤,不能編譯通過 class sample2為私有繼承class sample,故私有繼承的原則是私有資料成員不能被直接訪問,公有資料成員可以被class sample2直接訪問,如要訪問methoda 則必須使用函式呼叫,不能直接用物件訪問私有成員!這是c 的原則!dad的...
在c 中關於列舉型別的問題,在c 中關於列舉型別的問題
按你的 ext double cconv mttimesecs 就等於 double stdcall mttimesecs 相當於定義了乙個mttimesecs的函式啊。關於c 列舉型別的宣告 enum weekday 則可以定義 weekday first first即為代表星期的變數 這個列舉,...
C 關於類的程式設計題目,C 類和物件 簡單程式設計題目
具體思路如下 順序 鍵盤 主機 顯示器 他們與計算機類的關係是has a的關係,也就是三者加上一些相關功能組成計算機類。對於這種型別,一般是把組成直接寫入類裡,例如 class computer int main 題目要求是編寫計算機類,那麼你就定義乙個計算機類,裡面包含三個函式,分別代表鍵盤 顯示...
c中基類引用指向繼承類的物件
嚴格來說,應該說兩塊,a佔4個位元組的空間,儲存的是到b的引用位址,另一塊就是堆上的b例項了,因為a是乙個引用位址,a.methoda 實值上執行的是堆上b例項的b.methoda 父親有的東西兒子可以繼承 反過來呢 自然不允許 程式設計也是如此!派生類可以引用基類的變數 而積累則不可以 也不是太絕...