要点(1)
要點:
1.為什么(i++)不能做左值而(++i)可以?
//前綴形式,如++a
int &int::operator++() { *this+=1; return *this; } //后綴形式,如a++,由于返回的是副本,所以設定了const int,因為給oldvalue賦值是危險的,函數(shù)出棧動作結束后,oldvalue就消失了。 const int int::operator++(int) { int oldvalue=*this; ++(*this); return oldvalue; }2.(++a)+= (a++) 與 (++a) = (++a)+(a++)區(qū)別
//////////////////////////////////////////// #include <iostream> using namespace std; void main() { int a=4; cout<<((++a)+=(a++))<<endl; //結果為10 cout<<a<<endl; //結果為11 system("pause"); } //////////////////////////////////////////// #include <iostream> using namespace std; void main() { int a=4; cout<<((++a)=(++a)+(a++))<<endl; //結果為12 cout<<a<<endl; //結果為13 system("pause"); } ////////////////////////////////////////////(++a)+=(a++)和(++a)=(++a)+(a++)的結果為什么不同呢?
首先,10和11,12和13的不同時由于a++造成的。
(++a)+=(a++)
其實是先++a,那么a變成5,(a++)之后返回副本值還是5,那么5+5為10。
3.char數(shù)組初始化字符串時以\0結尾,如下:
str共有16個字符加上\0 輸出為17
4..在C++ 程序中調用被 C 編譯器編譯后的函數(shù),為什么要加 extern “C”聲明?
答:函數(shù)和變量被C++編譯后在符號庫中的名字與C語言的不同,被 extern “C”修飾的變量和函數(shù)是按照C語言方式編譯和連接的。由于編譯后的名字不同,C++程序不能直接調用C 函數(shù)。C++提供了一個C 連接交換指定符號extern“C”來解決這個問題。
5. switch()中不允許的數(shù)據(jù)類型是?
答:實型.
實型:在程序運行過程中可以改變其值的實型量被稱為實型變量,實型變量分為單精度(float),雙精度(double)和長雙精度(long double)型。
6.MFC中CString是類型安全類么?
答:不是,其它數(shù)據(jù)類型轉換到CString可以使用CString的成員函數(shù)Format來轉換
類型安全代碼指訪問被授權可以訪問的內存位置。
例如,類型安全代碼不能從其他對象的私有字段讀取值。它只從定義完善的允許方式訪問類型才能讀取。
7.C++中為什么用模板類。
答:(1)可用來創(chuàng)建動態(tài)增長和減小的數(shù)據(jù)結構
(2)它是類型無關的,因此具有很高的可復用性。
(3)它在編譯時而不是運行時檢查數(shù)據(jù)類型,保證了類型安全
(4)它是平臺無關的,可移植性
(5)可用于基本數(shù)據(jù)類型
8.NEWTEXTMETRIC 是什么。
答:物理字體結構,用來設置字體的高寬大小
9.程序什么時候應該使用線程,什么時候單線程效率高。
答:1.耗時的操作使用線程,提高應用程序響應
2.并行操作時使用線程,如C/S架構的服務器端并發(fā)線程響應用戶的請求。
3.多CPU系統(tǒng)中,使用線程提高CPU利用率
4.改善程序結構。一個既長又復雜的進程可以考慮分為多個線程,成為幾個獨立或半獨立的運行部分,這樣的程序會利于理解和修改。
其他情況都使用單線程。
10.Windows是內核級線程么 Linux有內核級線程么。
答:線程通常被定義為一個進程中代碼的不同執(zhí)行路線。從實現(xiàn)方式上劃分,線程有兩種類型:“用戶級線程”和“內核級線程”。
用戶線程指不需要內核支持而在用戶程序中實現(xiàn)的線程,其不依賴于操作系統(tǒng)核心,應用進程利用線程庫提供創(chuàng)建、同步、
調度和管理線程的函數(shù)來控制用戶線程。這種線程甚至在象 DOS 這樣的操作系統(tǒng)中也可實現(xiàn),但線程的調度需要用戶程序完成,
這有些類似 Windows 3.x 的協(xié)作式多任務。另外一種則需要內核的參與,由內核完成線程的調度。其依賴于操作系統(tǒng)核心,
由內核的內部需求進行創(chuàng)建和撤銷,這兩種模型各有其好處和缺點。用戶線程不需要額外的內核開支,并且用戶態(tài)線程的實現(xiàn)
方式可以被定制或修改以適應特殊應用的要求,但是當一個線程因 I/O 而處于等待狀態(tài)時,整個進程就會被調度程序切換為
等待狀態(tài),其他線程得不到運行的機會;而內核線程則沒有各個限制,有利于發(fā)揮多處理器的并發(fā)優(yōu)勢,但卻占用了更多的系
統(tǒng)開支。
Windows NT和OS/2支持內核線程。Linux 支持內核級的多線程
11.TCP/IP 建立連接的過程?(3-way shake)
答:在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務,采用三次握手建立一個連接。
第一次握手:建立連接時,客戶端發(fā)送syn包(syn=j)到服務器,并進入SYN_SEND狀態(tài),等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發(fā)送確認包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務器進入ESTABLISHED狀態(tài),完成三次握手。
12.IP組播有那些好處?
答: Internet上產生的許多新的應用,特別是高帶寬的多媒體應用,帶來了帶寬的急劇消耗和網絡擁擠問題。
組播是一種允許一個或多個發(fā)送者(組播源)發(fā)送單一的數(shù)據(jù)包到多個接收者(一次的,同時的)的網絡技術。
組播可以大大的節(jié)省網絡帶寬,因為無論有多少個目標地址,在整個網絡的任何一條鏈路上只傳送單一的數(shù)據(jù)包。
所以說組播技術的核心就是針對如何節(jié)約網絡資源的前提下保證服務質量。
13觸發(fā)器怎么工作的?
答:觸發(fā)器主要是通過事件進行觸發(fā)而被執(zhí)行的,當對某一表進行諸如UPDATE、 INSERT、 DELETE 這些操作時,
數(shù)據(jù)庫就會自動執(zhí)行觸發(fā)器所定義的SQL 語句,從而確保對數(shù)據(jù)的處理必須符合由這些SQL 語句所定義的規(guī)則。
總結
- 上一篇: 【神经网络】神经网络发展趋势及研究热点
- 下一篇: 四则运算——初级