C 簡單問題,C 簡單問題

2022-06-03 15:01:40 字數 1605 閱讀 9282

1樓:南浦無雲送滄波

疑問有點多,大家一起共勉學習

按程式的上下順序來看:

疑問一: friend void y::y(x &x1);此句更改為friend class y;將作用域符及其後面的函式名刪掉,即可通過編譯,但是編譯結果什麼也沒有做。

疑問二:friend class y位置不對,應該放在public 的宣告裡面,否則就無法訪問了

疑問三:void main()主函式內的,各個宣告語句,似乎都沒有貢獻啊,完全沒有傳遞資料,是否為資料傳遞不當所致?

很抱歉……才疏學淺……你可以到csdn上去問一問……抱歉打擾你今天才看見訊息,新年快樂

2樓:匿名使用者

friend void y::y(x &x1);

直接寫成 friend class y;

3樓:匿名使用者

樓上的說得不錯,直接用friend class y就行。如果你真的只想設定y::y為友元,要這樣寫:

class x;

class y

;class x

private:

int a,b;

};void y::y(x &x1)

4樓:匿名使用者

#include

using namespace std;

class x;

class y

;class x

private:

int a,b;

};void y::y(x&x1)

void main()

只要將 y提到x的前面,然後將x 作一個宣告,然後將x內的友員函式提到類外(而且還要在類x的定義之後)定義就沒錯誤了

如果在x內就定義了友員函式的話 還會產生use of undefined type 'x'的錯誤,這是因為在類內宣告,y函式的形參只是一個用於驗證實參型別正確性的,而如果在類內用到了"x.a",這時候x類還沒有被定義,這就產生了上面的錯誤了。

而類外的定義 放在x 後面,編譯函式的時候,x已經定義了 就沒錯了。。。

本人這樣分析,有誤的話,請高手指教。。。

friend 可以放在類裡的任意位置的意思是 友員函式的不受類的訪問許可權(public,private)的影響。。

5樓:

如果要賦值的話用strcpy

你這樣的話等於是把字串指標a重新指向了一個分配於棧上的字串「abcd6」。

相當於這樣:

char* a = new char[4];

char* p = "abcd6";

a = p;

第一句話是在堆上分配4個char的連續空間,第二句是定義一個臨時變數"abcd6",它是分配於棧上的。第三句是讓char* a重新指向棧上的這個指標,那麼堆上分配的記憶體就沒有指標指向了。

按照你的原意,你應該這樣寫

char* a = new char[4];

strcpy(a, "abcd6");

cout<

這樣試試看。

另外,樓上這幾個能不能不要誤導人家。。。lz你可以去參考《高質量c++程式設計》關於字串和記憶體的部分,說的很清楚。

簡單c語言問題 linker ,簡單C語言問題 linker error

這種提示是連線錯誤 linker error 一般可執行程式的過程是 源 目標 經過編譯 可執行程式 經過連線 你的問題就出在最後一步。那麼為何出現這樣的問題呢?既然編譯通過,說明你的源程式沒問題。那麼連線出錯由什麼原因引起的呢?一般我們寫程式不可能每個功能自己寫,一些共用的功能 函式 被封裝在庫中...

c 的簡單問題,一個c 的簡單問題

i 與 i 的區別 1.i是先把 i 的自身值加1,再取i值參與運算。2.i 是先取 i 當前的值參與運算,等到該語句結束 遇到分號 後才加1 特別注意。如題 int i,j i 10 i i i 先取i當前值進行賦值運算,即i 10 10 20,等語句結束後i再自增兩次,即i為22 cout i ...

簡單的C語言問題,C語言程式設計問題

include void swap int p1,int p2 void main 這裡用引用,p1和p2既是入參又是出參void swap int p1,int p2 執行結果如下 從錯誤提示來看,是型別不相容。這個在c裡面是合法的,算warning,但在c 中是錯誤。用gcc可以編譯過去 roo...