第一題(好像是錯最後一行)
void main() 
{
	int a[5]={1,2,3,4,5};
	int * const p=a;
	const int *q=a;
	const int * const x=a;
	p++;		*q=2;	x[3] = 4;
}
第二題(好像是錯 倒數第4行&倒數第8行)
B.	#include <iostream>
using namespace std;
class base 
{ 
public:
	int x;
	virtual void Func1() = 0;
private:
	int y;
};
class derived : public base
{
public:
	virtual void Func1()		{x = y = 10;}
}; 
void main() 
{
	base obj1;
	derived obj2;
	cout << obj1.x << " " << obj2.x;
}
第三題(我不太確定答案..)
class Time
{
public:
    Time(){hout=0;minute=0;second=0;this->count++;}
    ~Time(){this->count--;}
    static void settime(int h,int m,int s){hour=h;minute=m;second=s;}
private:
    int hour;
    int minute;
    int second;
    static int count;
    const int increment=1;
};
int Time::count=0;
第四題(我還是不知道答案 抱歉...)
class Example
{
public:
    Example(int y=10):data(y){}
    ~Example(int y=5){}
    int getIncrementData()const {return data++;}
    
    static int getCount(){
    cout<<"Data is"<<data<<endl;
    return count;
    }
private:
    int data;
    static int count;
}
希望大家能救救我
非常感謝!!非常非常感謝
簡單回答一下看到的幾個錯誤:
第一題:
void main() 
{
	int a[5]={1,2,3,4,5};
	int * const p=a;
	const int *q=a;
	const int * const x=a;
	p++;		*q=2;	x[3] = 4;
}
錯在第一行void main() 與
最後一行p++;		*q=2;	x[3] = 4;
因為main必須回傳int形態,應改為int main() 。
最後一行錯是因為在變數宣告上用了const這個關鍵字,
所以之後不能再修改變數的值。
第二題:
#include <iostream>
using namespace std;
class base 
{ 
public:
	int x;
	virtual void Func1() = 0;
private:
	int y;
};
class derived : public base
{
public:
	virtual void Func1()		{x = y = 10;}
}; 
void main() 
{
	base obj1;
	derived obj2;
	cout << obj1.x << " " << obj2.x;
}
錯在virtual void Func1()		{x = y = 10;}這行,
因為在class base中,y是private屬性,
即使是繼承的class也不能直接修改y的值
下面一樣要改int main() 。
在main()中,因為base裡有virtual函數,
不能直接宣告base obj1;
第三題:
class Time
{
public:
    Time(){hout=0;minute=0;second=0;this->count++;}
    ~Time(){this->count--;}
    static void settime(int h,int m,int s){hour=h;minute=m;second=s;}
private:
    int hour;
    int minute;
    int second;
    static int count;
    const int increment=1;
};
int Time::count=0;
首先是Time(){hout=0;minute=0;second=0;this->count++;}
拼字錯誤: 是hour不是hout。
再來是static void settime(int h,int m,int s){hour=h;minute=m;second=s;}
有錯,靜態函數不能初始化。
第四題:
class Example
{
public:
    Example(int y=10):data(y){}
    ~Example(int y=5){}
    int getIncrementData()const {return data++;}
    
    static int getCount(){
    cout<<"Data is"<<data<<endl;
    return count;
    }
private:
    int data;
    static int count;
}
錯在~Example(int y=5){},int getIncrementData()const {return data++;},static int getCount()這幾行。
~Example(){} ,destructor 不能有參數。int getIncrementData()const {return data+1;},因為函數宣告成const,不能去修改data的值,用data++會修改到。最後是在class的大括號後面要加分號,以完成class的定義。
2019/7/27晚間8:00更正:
抱歉先前回答的觀念有些不盡正確,
這邊更正一下。
void main()應該不算錯誤static靜態函數錯誤的原因這邊做個修正,static形態的變數,static函數給不是static的變數hour賦值會錯。static函數中去做了cout<<"Data is"<<data<<endl;這行,存取到不是static的變數data,故會報錯。參考資料: http://kamory0931.pixnet.net/blog/post/119201381-c%2B%2B的static
main回傳int要看編譯器,
我習慣的編譯器是可以用void main的,
所以也不算錯...
最後一題的3原因是「靜態函數不能初始化」,我不知道這個函數哪裡做初始話了...
還有非常感謝你的詳細解說,終於解惑了
class Time{
public:
    Time(){increment=1;}
private:
    int hour=0;
    int minute=0;
    int second=0;
    const int increment;
}
這個錯誤是因為increment宣告成const,所以不可以直接修改嗎?
好的,謝謝小魚大大的指正,因小馬的編譯器需要寫int main()才能夠編譯成功,一時不查,感謝糾正觀念~
sunnyyeh您好,關於static靜態函數錯誤的原因上述解說不盡正確。
已於解答中更正了你看一下。
另外回答您的問題:
對,const變數宣告後不能直接修改。
喔喔喔看懂了,非常感謝你們的幫忙QAQ
能幫我看另外兩題嗎(如果第二題太麻煩,就不用了)拜託?非常感謝你們
喔喔喔看懂了,非常感謝你們的幫忙QAQ
能幫我看另外兩題嗎(如果第二題太麻煩,就不用了)拜託?非常感謝你們