1樓:匿名使用者
必須為其指標所指向的物件分配記憶體才可以進行strcpy操作。
如果沒有分配記憶體,則:
strcpy(pname,p); 把p複製到**?沒有記憶體存放!
這可能會導致未知的情況發生,程式會崩潰.
以下是修改後的程式。
注:用構造分配記憶體(new),
必須要用析構(delete)釋放記憶體,否則會造成記憶體洩露(memory leak)
#include
#include
class product
~product()
};//*以下為在類外定義的成員函式
void product::pdput()//*/
/*要使類外成員函式成為行內函數,需在函式頭前冠以關鍵字inlineinline void product::pdput()*/void main()
2樓:
第一個pname也不對吧
pname與pnod你都沒有分配記憶體怎麼能strcpy呢?程式執行到 strcpy(pname,p);這裡應該會崩潰吧
pname與pnod都需要分配記憶體
3樓:極天異雲
public:
void pdput(); //類中定義成員函式
product(char *p,char *n,int m) //初始化本類,即定義建構函式
4樓:匿名使用者
為什麼不直接賦值
pname=p;
pnod=n;
c++類成員函式什麼情況下必須定義引數?
5樓:棲鳳婷
在這個程式中,我曾嘗試定義成員函式show()如下:
void myvector::show()
{cout<<"("
6樓:匿名使用者
此處x自然就是this->x,按你的想法應該是沒錯的;
把你的錯誤資訊貼出來看
c++專案中的成員函式和全域性函式的使用
7樓:匿名使用者
c++是面嚮物件語言。資料封裝面嚮物件語言最重要的一個特性。在c++中,類是進行封裝和資料隱藏的工具,進行資料和方法封裝的基本邏輯單位。
類中可以定義公有成員、保護成員和私有成員。公有成員可被任何函式訪問;保護成員可被該類的成員函式和相應的友元函式引用;而私有成員則只能為相應類的成員函式和相應的友元函式引用。
一般來說,儘量不要使用全域性函式。可使用類的靜態成員函式取代全域性函式。
8樓:匿名使用者
如果在一個來中使用,就使用似有函式,要是許多類都用,像數
據的流轉,最好用全域性函式來定義
9樓:匿名使用者
首先,你應該明白,所謂類的成員函式,其實並不是類本身的東西,歸根到底其實還是一個有限制了的全域性函式,或者說是個區域性函式,比如
class a
定義了一個這樣的類,sizeof(class a),得到的是8,就是x.y的型別
函式都不計算在內
所以,其實是一樣的,只是放在類中,比較方便理解和分工明確
類中的public函式其實就是一個全域性函式,前提是你要建立一個類的例項
所以,當你要大量用到一個函式的時候,而不想例項化一個類那麼就用全域性函式
如果你這個函式只與類的成員變數有關,那麼你就可以做成成員函式,
但全域性函式不能訪問類的私有成員,必須使用友元函式
c++的成員函式和普通函式
10樓:陽頂天鹿鼎記
類是具有一bai定特性的du,這個對檔案操作就具有一zhi定的特dao性,對檔案進行讀寫,並對內版
容進行處理權,所以這裡可以應用類,那麼這個類的例項就是一個可以對檔案進行操作並且處理的物件。把這些方法封裝起來,用起來比較方便,好管理,如果是c++**,最好是封裝起來變成類,這是c++的特性,用特定的物件完成對應的功能,需要幹什麼,只需要一個類的例項化即可,而c語言是過程性的,可以用到什麼的時候直接呼叫普通函式。
11樓:匿名使用者
類成員的函式還有一個作用就是名稱空間
12樓:匿名使用者
關於成員資料。如果處理的資料結果僅僅是在當前的記憶體中使用版,那就直接使用函式傳遞,也就權是非成員變數,如果當前處理的資料需要傳遞給其它的模組(通常是動態庫dll),那麼最好是將其儲存為成員變數,儲存在公共記憶體區,這樣方便資料的共享。
關於成員函式。如果當前函式僅僅完成一個單獨的任務,不需要呼叫其它函式,則將其設為獨立的與類無關的函式,如果當前函式需要與類內的某些函式互動,則將其設為成員函式。
這些都需要在實戰中思考,才能理解。
13樓:sheldon珊
類,好處;
1 :類封裝性好,可以不被外部呼叫...
2 :用到的時候再例項化..用完直接銷燬不佔記憶體。
至於兩者哪個好還得取決於這段**多麼?呼叫頻繁麼?
個人覺得類會比較好!
個人愚見
編寫c++的靜態成員函式要注意哪些事項,通常有什麼作用
14樓:匿名使用者
設計靜態成員函式的目的是什麼?靜態成員函式相當於c語言中的全域性函式,只不過它屬於那個類.
靜態成員函式只能訪問類的靜態資料成員,不能訪問非靜態資料成員.
靜態成員函式不要濫用,否則背離了物件導向程式設計的初衷.
類的非靜態成員函式可以呼叫靜態成員函式,但是反之則不行。
c++中定義的類,裡面的成員函式可以直接使用嗎?就是在沒有物件的時候。 例如,class裡有一個成 20
15樓:匿名使用者
沒有物件的時候要訪問類成員函式的話,只能訪問靜態成員函式。例如:
class a
}這樣可以在主函式裡直接用
a::abc();
這樣的語句進行呼叫。
16樓:匿名使用者
如果是static函式,可以用類名::abc()來呼叫
如果不是static函式,不可以直接呼叫
17樓:匿名使用者
不可以,唯一的例外是宣告成static 的成員函式可以
18樓:紛採
#include
using namespace std;
class hello
};int main(void)
19樓:匿名使用者
把類名當成名稱空間。
要呼叫的方法,寫成靜態方法,用類名引用。
c++問題,物件包含與成員函式不相容的型別限定符,請教大神
20樓:叛逆百分
void showpair();
改成 void showpair()const;
C包括類的宣告 成員函式的實現
include include class cscore void cscore input int id,char name,int math,int phi void cscore sum void cscore show void main c 成員函式的實現部分 寫在類外 究竟屬於類的內部還...
C 求助什麼叫類體內定義成員函式
class student public void display cou num c 中怎麼理解類內定義的成員函式就是行內函數?當你的class。public成員函式宣告的時候,只要這個函式體當中不存在switch等迴圈語句的時候,則這個函式體無論是在類的內部還是類的外部,這個成員函式在編譯器看來...
c類T,裡面的成員T a建構函式中,a如何
我們把c 11以後的baic 叫做現代c du如果 你用舊c 那zhi麼你dao可以用這版種語法 a t 或權 a 如果你用現代c 那麼儘量使用這種語法 a t 如果要在堆內分配記憶體,加上new 關鍵字。但是一旦使用了new,一定要使用智慧指標unique ptr shared ptr或weak ...