C中無參建構函式的使用問題,C 中通過無參建構函式來呼叫有參建構函式有什麼意義啊?

2021-05-14 10:06:48 字數 3440 閱讀 5136

1樓:

原因有二:

第一:「每個類裡面都有一個預設的無參的建構函式」

這個是有條件的:如果你不手動新增有參的建構函式,則編譯時會自動新增一個無參建構函式,但是如果你手動新增了一個有參的建構函式,這個「預設的無參建構函式」就不會自動新增,這時候如果你還想呼叫無參的建構函式,只能手動寫一個無參的建構函式,

第二:預設的無參建構函式裡面是空的,什麼都不執行,如果你想在無參建構函式中新增一些初始化**的工作,那就必須手動寫這個無參建構函式,

2樓:匿名使用者

預設如果不提供建構函式的話,系統會自動生成一個預設的建構函式,是一個沒有引數的,但是如果提供了建構函式,系統就不會在提供預設的建構函式了。

按照net標準,總是應該提供一個沒有引數的建構函式,除非你有特別的理由不這麼做,需要強迫在物件構造時候來初始化你的物件中的某些資料,而被初始化的資料你不希望在物件初始化後被改變。

3樓:匿名使用者

作用就是做一些初始化準備。有些物件無論你有引數、沒引數都需要初始化。比如分配記憶體(c++裡面用的多),給指定變數賦初值等等。

4樓:匿名使用者

無引數的建構函式,可以使用某些特定的資料進行資料成員初始化,而不是使用系統預設的資料進行初始化.比如使用系統預設的建構函式

public class account}

5樓:

看你新加東西的型別有的有有的就沒有

c#中通過無參建構函式來呼叫有參建構函式有什麼意義啊?

6樓:匿名使用者

節省**,避免重寫一遍!

7樓:匿名使用者

1樓說得對,**重用(可以理解為過載)

一般來說,都是引數少的呼叫引數多的,最終**都寫在引數多的裡面,你現在遇到的類建構函式裡面寫的**少,等寫得多了,你就能理解了

c#有參建構函式中怎麼呼叫其無參建構函式

8樓:傻的像博士

class a

public a(int a) :this()}當a a=new a(1);

時 會先呼叫無引數的建構函式。在呼叫有引數那個

9樓:匿名使用者

好像不可以把?不過你可以通過呼叫同一個方法來實現...

c# 在main函式中怎麼呼叫無參的建構函式

10樓:匿名使用者

你這種寫法是不行的,再者,這個和建構函式沒關哈,因為你的資料是採用double.parse方法傳入的。根據你的意思,最好還是放在建構函式裡面比較好,我已經執行出來了,完整的**如下,你看看

using system;

using system.collections.generic;

using system.linq;

using system.text;

class point

public double x;

public double y;

public point()

console.writeline("please input the points' x & y:");

trythis.x = double.parse(console.readline());

catch(exception e)

this.x = 0;

trythis.y = double.parse(console.readline());

catch (exception e)

this.y = 0;

public static double calculate(double x, double y, double a, double b)

double d;

d = math.sqrt((x - a) * (x - a) + (y - b) * (y - b));

return d;

static void main(string args)

point p1 = new point();

point p2 = new point();

console.writeline("兩點距離是:" + calculate(p1.x, p1.y, p2.x, p2.y));

console.readkey();

11樓:匿名使用者

解答:可以使用double.tryparse這個函式。

p1.x = double.parse(console.readline());

p1.y = double.parse(console.readline());

p2.x = double.parse(console.readline());

p2.y = double.parse(console.readline());

改為double doubleval;

boolean result ;

result = double.tryparse(console.readline(), out doubleval);

if (result==true)

else

result = double.tryparse(console.readline(), out doubleval);

if (result==true)

else

result = double.tryparse(console.readline(), out doubleval);

if (result==true)

else

result = double.tryparse(console.readline(), out doubleval);

if (result==true)

else

12樓:

public point()

13樓:匿名使用者

public point()

只有該這裡即可

14樓:冒晟睿寸駿

class

a()}

intmain()

這種基本的問題網上搜下很多

15樓:邱之槐巨洲

class

apublic

a(int

a):this()}當a

a=new

a(1);

時會先呼叫無引數的建構函式。在呼叫有引數那個

c#在main函式中怎麼呼叫無參的建構函式

16樓:楊逝軒

class a()

}int main()

這種基本的問題網上搜下很多

c 中的拷貝建構函式的問題,c 拷貝建構函式的問題

拷貝建構函式多被用來實現類物件的深拷貝。例如 class a 不定義拷貝建構函式時,你如果對兩個物件賦值,就會是淺拷貝,即 簡單的成員變數相等。a a,b a b 則,相當於作了a.p b.p,a,b的p指標指向了同一個地址,但是資料並沒有拷貝一份,這叫做淺拷貝。所以定義拷貝建構函式 a a a 然...

C 中函式引數問題,C 模板中函式引數問題

void visit bintreenode t 用左 右 左讀法 1 visit 往左讀,是 於是 visit 是指標2 再接著往右讀,是 3 再往左,是 4 再往右是 bintreenode t 括號中有變數宣告,是函式引數定義 5 再往左讀,是 void,函式返回值 所以,visit 是一個指...

函式形參列表,c 函式形參列表中 account 是什麼意思 為什麼 在後面

void fn int a1,int a2 這裡 變數名 不能為a1或a2,即不能與形參列表中的名字同名。在excel中常用函式的引數有哪些?選單 插入 函式 你可以檢視常用函式。如下圖所示 c語言自定義函式中引數列表前定義變數型別有什麼用 首先你要明白不抄同的型別之間不bai能直接進行運算的.如果...