[收集] 經典C/C++面試題(二)

來源:互聯網
上載者:User

1. 以下三條輸出語句分別輸出什嗎?[C易]
    char str1[]       = "abc";
    char str2[]       = "abc";
    const char str3[] = "abc"; 
    const char str4[] = "abc"; 
    const char* str5  = "abc";
    const char* str6  = "abc";
    cout << boolalpha << ( str1==str2 ) << endl; // 輸出什嗎?
    cout << boolalpha << ( str3==str4 ) << endl; // 輸出什嗎?
    cout << boolalpha << ( str5==str6 ) << endl; // 輸出什嗎?

2. 非C++內建型別 A 和 B,在哪幾種情況下B能隱式轉化為A?[C++中等]
答:
    a. class B : public A { ……} // B公有繼承自A,可以是間接繼承的
    b. class B { operator A( ); } // B實現了隱式轉化為A的轉化
    c. class A { A( const B& ); } // A實現了non-explicit的參數為B(可以有其他帶預設值的參數)建構函式
    d. A& operator= ( const A& ); // 賦值操作,雖不是正宗的隱式類型轉換,但也可以勉強算一個

3. 以下代碼中的兩個sizeof用法有問題嗎?[C易]
    void UpperCase( char str[] ) // 將 str 中的小寫字母轉換成大寫字母
    {
        for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )
            if( 'a'<=str[i] && str[i]<='z' )
                str[i] -= ('a'-'A' );
    }
    char str[] = "aBcDe";
    cout << "str字元長度為: " << sizeof(str)/sizeof(str[0]) << endl;
    UpperCase( str );
    cout << str << endl;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.