c 帶參建構函式怎麼初始化資料成員

2021-08-26 05:03:30 字數 2978 閱讀 9671

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 以上類...