1、以下數字在表示爲double(8字節的雙精度浮點數)時存在舍入誤差的有()。
A.的平方根 B.10的30次方 C.0.1 D.0.5
解析:ABC A超出了double型能表示的最大界限。小數點後的位權應該是2的負數次方纔沒有誤差,其他情況都有誤差,即小數點後的第一位位權應該爲2的-1次,即0.5,第二位也就是2的-2次,即0.25。
2、以下程序輸出結果是——()
class A
{
public:
virtual void func(int val = 1)
{
std::cout << "A->" << val << std::endl;
}
virtual void test()
{
func();
}
};
class B : public A
{
public:
void func(int val = 0)
{
std::cout << "B->" << val << std::endl;
}
};
int main(int argc, char* argv[])
{
B*p = new B;
p->test();
return 0;
}
解析:B->1
絕不重新定義繼承而來的缺省參數值!
1
2
3
|
B*p
= newB; p->test(); |
運算符重載時要遵循以下規則:
( 2 ) 重載運算符限制在C ++ 語言中已有的運算符範圍內的允許重載的運算符之中,不能創建新的運算符。
( 3 ) 運算符重載實質上是函數重載,因此編譯程序對運算符重載的選擇,遵循函數重載的選擇原則。
( 4 ) 重載之後的運算符不能改變運算符的優先級和結合性,也不能改變運算符操作數的個數及語法結構。
( 5 ) 運算符重載不能改變該運算符用於內部類型對象的含義。它只能和用戶自定義類型的對象一起使用,或者用於用戶自定義類型的對象和內部類型的對象混合使用時。
( 6 ) 運算符重載是針對新類型數據的實際需要對原有運算符進行的適當的改造,重載的功能應當與原有功能相類似,避免沒有目的地使用重載運算符。
%f是單精度浮點數的格式,%lf是雙精度浮點數格式。 %d整形。
某些運算符必須重載爲非成員函數,比如 operator >>...
聲明枚舉變量三種方法
1、先聲明枚舉類型後定義枚舉類型變量
enum WeekdayType
{
sun,mou,tue,wed,thu,fri,sat
};
enum WeekdayType today,yesterday,tomorrow;
2、聲明枚舉類型的同時定義枚舉類型變量
enum WeekdayType
{
sun,mou,tue,wed,thu,fri,sat
}today,yesterday,tomorrow;
3、直接定義枚舉類型變量
enum
{
sun,mou,tue,wed,thu,fri,sat
}today,yesterday,tomorrow;