1樓:匿名使用者
應該是:
name=name;
即把建構函式中的引數傳遞給類的私有成員:char *name,;
這樣,在主函式中
int main()
2樓:
person::person(char *name)再給你寫個析構把,自己申請的空間必須自己釋放掉。
person::~person()
沒編譯,你試下不知道有沒有問題
3樓:花花浪客
name在建構函式分配記憶體,賦值傳入字串,用完後在析構裡要記得**記憶體
person::person( char *name )else}
4樓:匿名使用者
帶引數的建構函式可以傳遞引數區初始化類的資料成員。
建構函式 ,是一種特殊的方法。主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。特別的乙個類可以有多個建構函式 ,可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。
示例:#include
using namespace std;
class time
void show_time();
private:
int hour,minute,sec;
};int main()
void time::show_time(){cout<
結果:12:11:50
5樓:藍色**
classperson
;person( char *name );
voidprintname();
};person::person( char *name )
6樓:
person x("ccc");
c++類中的類成員變數怎麼呼叫帶引數的建構函式來初始化?
7樓:匿名使用者
要呼叫帶參的構造抄函式,必襲須這樣
做:#include "stdafx.h"
class a
;a(int a);
int ax;
};class b
b() : bx(0) //這樣也行du/*****************/
void print()
/*************************/a bx; //這樣宣告
/**************************/};int main(int argc, char* argv)
c++中設定類函式成員的預設值和建構函式的初始值有什麼區別
8樓:在晴天的雨傘
一般進行成員變數初始化用兩種方法
第一種是通過在建構函式內賦值
class point
;point( int x, int y )
private:
int _x, _y;
};第二種是使用初始化列表
class point
;point( int x, int y ):_x(x),_y(y){}
private:
int _x, _y;
};這兩種用法是有區別的
一、在有些情況下,必須使用初始化列表。特別是const和引用資料成員被初始化時。
class point
;point( int x, int y ):_x(x),_y(y){}
//point()
//point( int x, int y )
private:
const int _x, _y;
};二、是從效率方面來說的,對於內建型別或復合型別,差異不會太大,但對於非內建資料型別,差異還是很明顯的
如再給point類新增乙個新的string型別的成員變數
class point
; 建構函式內賦值進行初始化
point( int x, int y, string name )
_name = name 這個表示式會呼叫string類的預設建構函式一次,再呼叫operator=函式進行賦值一次。所以需呼叫兩次函式:一次構造,一次賦值
用初始化列表進行初始化
point( int x, int y, string name ):_x(x),_y(y), _name(name){}
_name會通過拷貝建構函式僅以乙個函式呼叫的**完成初始化
即使是乙個很簡單的string型別,不必要的函式呼叫也會造成很高的代價。隨著類越來越大,越來越複雜,它們的建構函式也越來越大而複雜,那麼物件建立的代價也越來越高,所以一般情況下使用初始化列表進行初始化,不但可以滿足const和引用成員的初始化要求,還可以避免低效的初始化資料成員。
9樓:匿名使用者
函式成員的預設值指的是預設引數值嗎?這個和建構函式沒什麼關係
建構函式裡面如果對成員函式進行呼叫,可以給成員函式的引數賦值,如果不賦值,那成員函式就用的預設引數值。
如果建構函式不呼叫成員函式,那麼成員函式的預設引數和建構函式一點關係都沒有。
c++中多個類成員變數,如何呼叫有參建構函式初始化
10樓:衣若谷斯丁
在建構函式中才叫初始化,你不給出會有預設的建構函式在成員函式中叫做賦值,而不是初始化
11樓:
直接用類名即可,例如
c(int a, int b):a(a),b(b){}
c++中類中的結構體資料成員怎麼用建構函式初始化
12樓:匿名使用者
結構體本身就是乙個class只不過所有成員的預設訪問級別為public。它定義建構函式和普通class一樣的
C建構函式的過載問題,C建構函式和析構函式可以過載嗎
因為對於後者來說,當執行my class c1語句時,c1可以呼叫my class建立物件,也可以呼叫my class float x 3.5,float y 8.5 建立物件.但是這會產生兩個不同的c1物件,極易發生歧義。所以系統不知道要呼叫那個建構函式產生物件,也不會允許程式這麼做。c 建構函式...
C中過載賦值建構函式的問題,C複製建構函式和號過載問題
賦值運bai算符和複製建構函式都 du是用已存zhi在的b物件來建立另dao乙個物件a。不同之回處在於答 c 複製建構函式和 號過載問題 表述基本上沒有問bai題。從功能上來du說,建構函式是用於建立zhi物件的dao,operator其實是可以看成普通內的成員函式,只不容 過是以符號的形式代替文字...
C中的建構函式
建構函式就是定義乙個類的物件是,用來初始化的 在建構函式中不要對類的示例做初始化以外的事情.不要嘗試顯式的呼叫建構函式,也就是直接去呼叫 這句話就是說,建構函式本身,不需要我們自己去呼叫。例如 class a public a int w public a int w,int y,int z 以上類...