1樓:匿名使用者
/*因為你的基類student裡定義了建構函式,基類的預設建構函式不能呼叫。繼承類裡也就不可能使用預設建構函式了。
把你基類裡的建構函式改為有預設值的建構函式,就能解決你的問題。**如下:*/
#include "stdafx.h"
#include
#include
using namespace std;
class student
~student(){}
protected:
int num;
string name;
char ***;
};class student1:public student
student1(int a,string b,char c,int d,string e):student(a,b,c),age(d),addr(e){}
void dis_1()
private:
int age;
string addr;
};void main()
/*僅供參考!
補充:1、編譯器為類合成了預設建構函式。
2、當你自己定義了建構函式時,合成的預設建構函式將不再工作。
3、這時你可定義自己的預設建構函式來代替編譯器合成的預設建構函式。
4、為類的成員取預設值,可以對無引數的初始化式取預設值。
例如:student stud2;stud2.dis_1();stud2的各個成員將取引數裡的預設值。
如果有其他問題,請參考我文庫裡的《類的建構函式,解構函式,複製建構函式,賦值操作符》*/
2樓:未及細想
student1()需要呼叫基類student();只要在基類新增預設建構函式:
student(){}
多說一句:c 中用void main(),這可不是個很好的主意,大部分編譯器都不會支援
c++建構函式的過載問題
3樓:頑石
因為對於後者來說,當執行my_class c1語句時,c1可以呼叫my_class建立物件,也可以呼叫my_class(float x = 3.5, float y = 8.5)建立物件.
但是這會產生兩個不同的c1物件,極易發生歧義。所以系統不知道要呼叫那個建構函式產生物件,也不會允許程式這麼做。
c++建構函式過載的問題?
4樓:和小敘
你那不叫重灌,叫語法錯誤。你在定義hujiaoqi類的時候已經實現建構函式的過載了,即一專個是無參的建構函式hujiaoqi() ,一個是有參的hujiaoqi(int),類的建構函式只呼叫一次,而且不管有多少個建構函式,屬只會呼叫其中一個,並且是在定義物件的時候自動呼叫的,具體是呼叫哪個根據定義物件時傳入的引數來決定。 即你上面寫的hujiaoqi h()
5樓:匿名使用者
h(i); //過載
這裡有問題麼?
c++建構函式及其過載問題
6樓:心願
看不出來有過載 第一處劃線的只是定義了建構函式。第二處劃線的是對第一處的函式體的內容寫完整
7樓:匿名使用者
你看它不帶引數的,就說明不是你過載那個
8樓:匿名使用者
當然是第一條橫線上的
c++中過載賦值建構函式的問題!!
9樓:匿名使用者
賦值運bai算符和複製建構函式都
du是用已存zhi在的b物件來建立另dao一個物件a。不同之回處在於答
c++建構函式與符號過載問題,求指點~
10樓:幻形術
//嚴格的拷貝建構函式是這樣的,const 引用才能接受右值包括常量、const只讀量、臨時量
person(const person &p)
c中子類建構函式中如何呼叫父類建構函式
四捨 入 class a class b a 子類的子類呼叫父類中的隱藏成員 一般情況,在呼叫父類成員時子2代和子1代沒什麼區別。但如果子1代隱藏父類成員,情況就會不同。像上面的情況,son隱藏了父類的成員變數name和成員方法tellname 如果再有乙個類grandson繼承son,那grand...
C 中的建構函式問題,c 建構函式的問題
建構函式一般用來對類中的資料成員進行初始化工作,但並不是要對全部資料初始化,你只需要選擇自己需要的資料進行賦值即可。其實這一點從預設的建構函式也能看出來 當你沒有顯示的寫乙個建構函式的時候,編譯器會為你提供乙個預設的建構函式,它沒有引數,只有乙個空語句,也就是說它沒有對任何資料成員進行初始化。由於構...
什麼叫函式過載,c 中函式過載的原則是什麼啊?
憶安顏 函式過載是一個同名函式完成不同的功能,編譯系統在編譯階段通過函式引數個數 引數型別不同,函式的返回值來區分該呼叫哪一個函式,即實現的是靜態的多型性。但是記住 不能僅僅通過函式返回值不同來實現函式過載。過載函式的多義性無法確定,直到遇到函式呼叫。此時,將為函式呼叫中的每個引數生成集,並且可以確...