程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++程序基礎知識說明

C++程序基礎知識說明

編輯:C++入門知識

也許大家對於C++程序還不是很了解,看完本文後對您一定會大有幫助,下文除了學習C++程序的基本性質外還對C++程序的新特性進行全面研究,希望能給大家帶來有用的信息。

  1. class  A  
  2.  
  3. {  
  4.  
  5. };  
  6.  
  7. main()  
  8.  
  9. {   
  10.  
  11. A  a;  
  12.  
  13.   cout<<sizeof(a)<<endl;  
  14.  

C++程序的知識很多,有四庫全書《C++程序設計》,《C Primer》,這本文章只想談談我個人所看到的用到的知識。加上自己的理解。很多東西可能沒有系統化,而且,知識也是想到那寫到那。

首先談談 類的對象的大小,

  1.  class  A  
  2.  
  3. {  
  4.  
  5. };  
  6.  
  7. main()  
  8.  
  9. {   
  10.  
  11. A  a;  
  12.  
  13.   cout<<sizeof(a)<<endl;  

那麼:

  1. class A  
  2.  
  3. {  
  4.  
  5.   char m;  
  6.  
  7. };  
  8.  
  9. main()  
  10.  
  11. {  
  12.  
  13. A  a;  
  14.  
  15. cout<<sizeof(a)<<endl;  
  16.  

會打印結果為多少啊。這個問題叫Alignment,有一次,我就遇到這樣郁悶的問題,我們的工程中代碼都是用數組傳送數據,比如坐標 x,y,那麼就這樣賦值

  1. *(int *)&w[0]=x;   
  2. *(int *)&w[4]=y; 

或許大家很少用),這樣的代碼有一個缺點,送數據,取數據十分不方便,而且,由於有下標,因此,代碼不好利用循環結構還有不是四位的數據) 。只能一位一位的賦值,還有一個問題,就是,當工程一個約定變了的時候,所有的代碼都要改動。不好reuse。

因此,我希望借助結構strcut,或者class來改造程序代碼,但是就遇到數據對齊問題。

比如,我定義一個C++程序結構:

  1. struct A  
  2. {  
  3.  char type;  
  4. int y;  
  5. };  
  6. char  buf[MAX];   
  7. A a;  
  8. memcpy(buf,&a,sizeof(a));  
  9.  

但是,卻發現buf[]的內容有三個不是我需要的內容。其實,我看了一些資料,說這是為了字節對齊,CPU存取數據是按照四位存取,這樣,就不會取四位數據,一位是char type,三位是y的數據。作為編程者對這個有可能就不熟悉。

還有類似的問題,以後,再敘。類的數據的訪問權限數據有三種權限:public,private,protected。C++程序是面向對象的語言,因此,它的許多概念來源於現實生活。比如這個權限問題就可以這麼解釋。基本類相當於父親,子類相當於孩子。

還有一個友元類,相當於朋友。比如,對於父親有的東西成員變量)是對任何人都共享的,大家都可以知道的,不是什麼秘密。那麼,用public來描述這樣的東西。如果,有的東西,是只有不是外人不能知道的。

也就是,兒子,好朋友都可以分享的秘密的話,那麼,這樣的東西用protected描述。同樣,還有的東西,大人不想讓小孩知道,但是,卻對好朋友不保留,這樣的事情,在現實生活中也是有的,那麼,這樣的用private描述。

  1. 簡介學習C++總結之談
  2. 對C++庫函數進行學習探索總結筆記
  3. C++類庫設計的基本構思與方法
  4. C++語言真的還有市場價值?
  5. C++類庫設計的基本構思與方法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved