日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C++學(xué)習(xí)筆記二-日志-邱泳天-血與榮譽SNS平臺-Poweredby...

 SkySeraph 2010-07-31

C++學(xué)習(xí)筆記 二

已有 86 次閱讀  2009-04-21 17:13
上面寫的太多了 我用新的來寫 要不然自己都搞不清楚了,上面的 還不懂就復(fù)習(xí)一下吧 從這里開始
面向?qū)ο?新的過程
1:
語言的發(fā)展歷程是 經(jīng)過 機器語言 比如0101010101 和 匯編語言 EXP JUMP等 高級語言 然后是面向過程 C等  最后是 面向?qū)ο?C++ 面向?qū)ο?主要是解決 代碼 維護(hù)性差 可重用性差等,
面向?qū)ο蟮母拍畎俣认?都是概念性問題。不打了
2:
面向?qū)ο蟮奶卣?/div>
抽象  封裝   繼承   多態(tài)
3:
類 對象 和成員
4:
#include <iostream>
using namespace std;
class Human //定義一個類

public: //公有成員
 void GetStature(); // 這里是調(diào)用 下面私有的身高
 void GetWeight(); //調(diào)用體重
private: //表示要被各個對象所封裝的 是私有的 不能被共享 要調(diào)用此成員 必須要在公有上調(diào)用
 int stature; //身高
 int weight;//體重  可以自定義
};// 這里要加 分號 代表該類結(jié)束
5:
#include <iostream>
using namespace std;
class Human // 關(guān)于習(xí)慣問題,一般 的 類 的命名 首字母為大寫 有的也有全部大寫或者全部小寫

public:
 void GetStature();   //這里由于是兩個單詞 所以 單詞首字母大寫 也有 get_stature
 void GetWeight();
private:
 int stature;  // 成員變量 這里一般 都為小寫
 int weight;
};
// 習(xí)慣問題都是 看個人或者公司安排 這樣可讀性強
 
6:
#include <iostream>
using namespace std;
class Human

public:
 void GetStature(){cout<<stature;}   //由于上一節(jié)只是申明一個成員函數(shù) 但是并沒有實現(xiàn)功能 所以在這里要讓他實現(xiàn) 輸出功能
 void GetWeight();
 void SetWeight(int j){weight=j;} //同下
 void Setstature(int i){stature=i;} //接受一個用戶輸入的值 int i 然后把 i 這個值 賦予給私有變量 stature
private:
 int stature; 
 int weight;
}; 
int main()
{
 int a,b;
    cout<<"請輸入一個值:\n";
 cin>>a;
    cout<<"請輸入一個值:\n";
 cin>>b;
 Human Mike;//這個是定義類中的對象。 Mike 就是對象 // 類是個虛擬的 而對象是個實實在在的
    Mike.Setstature(a); // 這里是輸入一個值   接這條語句 void Setstature(int i){stature=i;}
 Mike.GetStature();// 調(diào)用函數(shù)里面的功能, 就是輸出這個值
 Mike.SetWeight(b);
 Mike.GetWeight();
 return 0;
}
//對象是通過 . 來調(diào)用它的成員的 而對象是不能調(diào)用私有的成員數(shù)據(jù)的 必須要通過 公有的成員函數(shù) 來調(diào)用私有的成員數(shù)據(jù)
//下面是第二種方法定義 getweight 函數(shù)
void Human::GetWeight() //首先定義函數(shù)的返回值  當(dāng)通過類來訪問他的成員函數(shù)的時候 要通過:: 這個來訪問
{
 cout<<weight; //該函數(shù)的實現(xiàn)代碼 就是輸出 成員變量 體重
}
//很難把,建議多看下注釋。 雖然是俺打的注釋 不過俺也覺得有點難 其實多看幾遍就清楚 也很簡單
//如果你還是覺得不懂 建議看下我以前寫的 函數(shù)定義 方面的章節(jié)
 
7:
#include <iostream>
using namespace std;
class Human

public:
 void run(){cout<<"我是鬼,我會跑步\n";} //成員函數(shù)只能被對象調(diào)用
 void eat(){cout<<"我是鬼,我會吃人\n";}
 void speak(){cout<<"我是鬼,我會說話\n";}
 void walk(){cout<<"我是鬼,我會走路\n";}
}; 
int main()
{
   // 所謂的 類 是個抽象的概念 比如 int 你不可能給他直接賦值 為 int =1  只有 int a=1 才可以。
 //class 其實也是一個類型  所以 你不冷 human.weight  這樣 是錯誤的
 Human Tom; // 這里才是定義一個類的對象 只有對象才是存在的 才能被調(diào)用 就像下面這樣
 Tom.eat();
 Tom.run();
 Tom.speak();
 Tom.walk();
 return 0;
 // 如果你調(diào)用一個不存在的成員函數(shù) 那么將會 出錯 比如 Tom.wori(); “wori”: 不是“Human”的成員
}
8:
#include <iostream>
using namespace std;
class Human

public:
 int weight; //公有成員 可以被human 這個類所申明的對象 調(diào)用。如下面
 void set(int w) // 這里是設(shè)置 一個SET函數(shù) 并且接受用戶輸入的值 保存到W 把W賦值給 HIGHT 為什么要定義私有的成員?
  //因為可以提高安全性。比如下面 限定 用戶輸入的值 而且改動后 不會對下面的程序影響,便捷
 {
  if(w>0&&w<100)
   hight=w;
  else
  {
   cout<<"請輸入一個大于0而小于100的數(shù),否則set 將返回0\n";
   hight=0;
         }
 }
 int print(){return hight;} //這里是設(shè)置一個 print 函數(shù)  前面有個INT 為返回值 所以要返回 hight 的值 因為上面
 // 是把w 賦值給 hight 所以才返回他
private:
 int hight; //如果是這種私有的成員變量,那么就應(yīng)該在公有上面設(shè)置函數(shù)才能調(diào)用
}; 
int main()
{
 Human tom; // 定義一個 tom 的對象
 tom.weight=4;
 cout<<"tom的體重為: "<<tom.weight<<endl;
 Human jack;//定義一個jack的對象 都可以調(diào)用
 jack.weight=5;
 cout<<"jack的體重為: "<<jack.weight<<endl;
 int b;
 cout<<"請輸入一個數(shù):\n";
 cin>>b;
 Human guinaoer;
 guinaoer.set(b); // 上面已經(jīng)看到 是定義了一個 set 函數(shù) 用做接受 用戶輸入的值,所以我們要給他輸入個值
 cout<<"guinaoer的身高為: "<<guinaoer.print()<<endl; // set只用作 輸入 要輸出 所以是 print 函數(shù)
 return 0;
 // 如果你調(diào)用一個不存在的成員函數(shù) 那么將會 出錯 比如 Tom.wori(); “wori”: 不是“Human”的成員
}
//代碼有點多 不過都是我們學(xué)習(xí)過的 看起來應(yīng)該不難
 
9:
#include <iostream>
using namespace std;
class Human

public:
 void set(int)  //當(dāng)然你也可以只申明 在下面定義
 int print(){return hight;}
private:
 int hight;
}; 
int main()
{
}
void Human::set(int w); //這里開始定義
{
 if(w>0&&w<100)
  hight=w;
 else
 {
  cout<<"請輸入一個大于0而小于100的數(shù),否則set 將返回0\n";
  hight=0;
 }
}
 
10:
#include <iostream>
using namespace std;
class Human
{
public:
 inline void set(int x,int y) //其實也只是在前面加了個 inline 注意申明在后面加; 非申明 不加。
 {
  i=x;
  j=y;
 }
 inline void print()
 {
  cout<<"兩個數(shù)相乘的結(jié)果為:\n"<<i*j<<endl;
 }
 //在函數(shù)體短小的情況下可以像上面用inline 調(diào)用 。內(nèi)斂函數(shù)
private:
 int i,j;
};
int main()
{
   Human Tom;
   Tom.set(2,3);
   Tom.print();
   return 0;
}
// 為什么要分開寫?因為如果全部寫在一起 會導(dǎo)致程序變大 因為他是一個程序集。所以
//分開寫 可以減少程序占用內(nèi)存。 比如調(diào)用100此 那他的體積就太大了。 而 inline 就是為了解決這個問題而誕生的
//但是 inline 也有問題 他也會復(fù)制100此這個函數(shù) 但是他不是復(fù)制的程序集 所以相對小店
 
11:
當(dāng)然 其實上面的代碼也可以分開寫。 把類的代碼
#include <iostream> 到  };   全部新建一個頭文件 保存到頭文件里面 比如 1.h
那么你只需要調(diào)用的時候這樣就可以了在CPP里面
#include "1.h"  這樣寫 的好處在于,大家可以分工合作 因為類不需要關(guān)心 調(diào)用這個類的細(xì)節(jié) 只需要自己編就可以了
 
12:
#include "iostream"
using namespace std;
class Human
{
public:
 void func(int x,int y) //const 這里如果加三const 的值。就會報錯 因為他試圖對私有成員 i 和 j進(jìn)行修改 所以報錯
 {
  i=x;
  j=y;
 }
 void print()const //加上const 的意思是,因為i 和j 值是被 print 輸出 而不是修改 ,所以 不會報錯
 {
  cout<<"兩個數(shù)相乘的結(jié)果為:\n"<<i*j<<endl;
 }
private:
  int i,j;
};//這樣做的好處是幫助你差錯 而且你如果確定參數(shù)不允許被修改 那么就 加上const
//在編程的時候 如果不修改的成員函數(shù) 那么就要加上const  這樣是編程的好習(xí)慣
 
13:
#include <iostream>
using namespace std;
class rectangle //構(gòu)造函數(shù):由于在創(chuàng)建一個對象時 他的數(shù)據(jù) 不明確,所以要對其初始化。
 //假如我們在創(chuàng)建一個長方形的時候 要知道他的長和寬 但是不明確 就要使用構(gòu)造函數(shù) 就像這個例子一樣
{
public:
 rectangle(int a,int b) //區(qū)別在于 這里就是定義一個構(gòu)造函數(shù) 他是 rectangle 的構(gòu)造函數(shù) 用來構(gòu)造長方形
 {
  weight=a;
  lenght=b;
 }
 int areo()
 {
     return lenght*weight;
 }
private:
 int weight,lenght;
};
int main()
{
 rectangle a(3,4);
  cout<<a.areo();
 return 0;
}
 
14:
#include <iostream>
using namespace std;
class rectangle
{
public:
 rectangle(){cout<<"我是構(gòu)造函數(shù):\n";} //這里是默認(rèn)的構(gòu)造函數(shù)。
 rectangle(int a,int b)
 {
  weight=a;
  lenght=b;
 }
 int areo()
 {
     return lenght*weight;
 }
private:
 int weight,lenght;
};
int main()
{
 rectangle a(3,4);
 rectangle b;//因為b 沒有被初始化 所以會調(diào)用默認(rèn)構(gòu)造函數(shù) 因為默認(rèn)構(gòu)造函數(shù)已經(jīng)被我們設(shè)定的默認(rèn)構(gòu)造函數(shù) 。像上面 我們就自己設(shè)置了一個默認(rèn)
 //構(gòu)造函數(shù) 所以輸出 了 上面的內(nèi)容
  cout<<a.areo();
 return 0;
}
 
15:

#include <iostream>
using namespace std;
class xyry
{
public:
    xyry();
 ~xyry(); //這里就是析構(gòu)函數(shù)的定義
};
xyry::xyry()
{
 cout<<"構(gòu)造函數(shù)執(zhí)行完畢\n";
}
xyry::~xyry()
{
 cout<<"析構(gòu)函數(shù)執(zhí)行完畢\n";
}
int main()
{
 xyry a; //這里開始是調(diào)用 默認(rèn)的構(gòu)造函數(shù)的功能 。
 return 0;
}//這里 由于 構(gòu)造函數(shù)已經(jīng)執(zhí)行完畢,所以到這里才執(zhí)行析構(gòu)函數(shù)。因為析構(gòu)函數(shù)是 釋放構(gòu)造函數(shù)的內(nèi)存空間 所以要在
//構(gòu)造函數(shù)執(zhí)行完畢后才執(zhí)行
//構(gòu)造函數(shù)和析構(gòu)函數(shù)都不能定義返回值 而且 析構(gòu)函數(shù)是不能加參數(shù)的 一個類中只能有一個析構(gòu)函數(shù)
 
16:
#include <iostream>
using namespace std;
class xyry
{
public:
    xyry();
 ~xyry();
};
xyry::xyry()
{
 cout<<"構(gòu)造函數(shù)執(zhí)行完畢\n";
}
xyry::~xyry()
{
 cout<<"析構(gòu)函數(shù)執(zhí)行完畢\n";
}
int main()
{
 xyry a[3];//定義數(shù)組 分別為 0 1 2 他會執(zhí)行三次 構(gòu)造函數(shù)和析構(gòu)函數(shù) 先執(zhí)行 3此構(gòu)造 在釋放構(gòu)造內(nèi)存三次
 return 0;
}
17:
#include <iostream>
using namespace std;
int main()
{
 int i=1;
number:i++; //這里的number 是一個標(biāo)號 是為了配合goto 語句的使用
 cout<<"*";
 if (i<10)
 {
  goto number; // goto 意思是跳轉(zhuǎn)到。。是個很古老的語句 ,goto 跳轉(zhuǎn)到標(biāo)號處在執(zhí)行 i++
 }
 cout<<"\n程序結(jié)束\n";
 cout<<"*********\n";
 return 0;
}
//goto語句要慎用 而且現(xiàn)在用的很少,因為 goto 語句可以跳轉(zhuǎn)到 程序任意位置 所以調(diào)試起來很難
 
18:
#include <iostream>
using namespace std;
int main()
{
 int i;
    cout<<"請輸入一個數(shù):";
 std::cin>>i;
 while (i<100&&i>3)//這里是判斷輸入的數(shù)是不是小于100 而且大于3的數(shù),如果為真  執(zhí)行大括號里面的 為假 就結(jié)束
 {
  cout<<"i:"<<i<<endl;
  i++;
 }
 return 0;
}//這個是 while 的語句使用方法,while 和if差不多 不過 if 是執(zhí)行一次 而 while 是執(zhí)行多次 直到 判斷為假的時候才結(jié)束
 
19:
#include <iostream>
using namespace std;
int main()
{
 char content='y';//這里定義為 y 是因為不這樣定義 程序就直接完了
 while (content=='y'||content=='Y')// 如果你輸入的字符不是 y 或者 Y 其中的一個 那么就退出
 {
  cout<<"\n這里是演示的語句,如果想在看到這條語句請按y 否則按n\n";
  cin>>content;
 }
 //下面的代碼是實現(xiàn)自定義循環(huán)次數(shù)的。
 int count,many;
 cout<<"\n請問你要看幾次?\n";
    cin>>count;
 many=0;
 while (many<count)
 {
  cout<<"HI,C++\n";
  many++;//這里必須加 因為 many的值為0  所以每次加1  這樣加到和用戶輸入的值一樣就退出循環(huán)
 }
 cout<<"\n程序執(zhí)行完畢\n";
    return 0;
}
 
20:
#include <iostream>
using namespace std;
int main()
{
 int a;
 a=0;
 while (a<6)
 {
  a++;
  if (a==1)
  {
   continue;//continue 的作用是 不執(zhí)行下面的語句 而跳轉(zhuǎn)到 while 繼續(xù)執(zhí)行。
   //這里 如果 a=1 的時候 那么就不會輸出a了 因為 continue 已經(jīng)忽略過了下面的語句
  }
  else if (a==4)
  {
   break; //break 的意思結(jié)束循環(huán)。 比如 如果 a 等于4 的時候 這條循環(huán)語句就會被強行終止然后跳到循環(huán)外面的語句繼續(xù)執(zhí)行
  }
  cout<<"a的值為:"<<a<<endl;
 }
 cout<<"a的值為:"<<a<<endl; //這里會輸出4 因為 a++的時候 a的值已經(jīng)是4了 所以才輸出4
 return 0;
}
 
21:
#include <iostream>
using namespace std;
int main()
{
 int a;//這里的a 必須要是外面 因為如果在 while里面 就變成無限循環(huán)了 a的值永遠(yuǎn)都是0
 a=0;
 while (1)// 1 的意思為真, 也可以寫為 真 這里的意思是 永遠(yuǎn)為真 如果沒有break 這里就是死循環(huán)
 {
  a++;
  int b;
  cout<<"請輸入一個數(shù):";
  cin>>b;
  if (a>3)
  {
   break;
  }
 }
 cout<<"程序執(zhí)行了:"<<a<<endl;
 cout<<"程序執(zhí)行完畢\n";
 return 0;
}
22:
#include <iostream>
using namespace std;
int main()
{
 int a,b;
 a=0;
 cout<<"你想看幾次?\n";
 cin>>b;
 do //do while 語句 的意思是 無論條件是否成立 都執(zhí)行 一次 。比如 如果你輸入0 在正常情況下會直接退出 不執(zhí)行 while 循環(huán)
 // 如果do while 那么將至少執(zhí)行一次
 {
  cout<<"狼牙月,伊人憔悴\n";
  a++;
 } while (a<b);// 后面要加 ;  這才代表這是一條語句
 return 0;
}
 
23:
#include <iostream>
using namespace std;
int main()
{
 int a,b;
 cout<<"你想看幾次?\n";
 cin>>b;
 for (a=0;a<b;a++) // for 循環(huán)語句的使用和 while 差不多 就是把 a=0 和 a++放入了 for判斷 語句中 。
  //需要注意的是第一個和第三個可以是語句 但是第二個 必須是表達(dá)式 for 比 while更加簡潔
 {
  cout<<"天涯何處無芳草\n";
 }
 return 0;
}
 
24:
#include <iostream>
using namespace std;
int main()
{
 for (int a=0,b=0,c=0;c<3;a++,b++,c++)//這里是比較靈活的運用for 循環(huán) 因為 for 支持三種參數(shù) 所以 可以用 : 這個表示語句結(jié)束
  //如果是, 還可以繼續(xù)寫
 {
  cout<<"a:"<<a<<" b:"<<b<<" c:"<<c<<endl;
 }
 return 0;
}
 
25:
#include <iostream>
using namespace std;
int main()
{
 int a=0;
 for (;;)//條件為空的 for 循環(huán) 就是這樣的。 其實和 while(1) 是一樣的  可以換了試試看
 {
  if (a<5)
  {
   a++;
   cout<<"哦哦哦哦哦哦哦哦哦\n";
  }
  else
   break;
 }
 for (int b=0;b<3;cout<<"b: "<<b++<<endl)// 這里就是功能為空的語句 也可以這樣寫 雖然沒問題
  //但是卻不如把 cout 寫到 {} 里面
 {
  ;
 }
 return 0;
}
 
26:
#include <iostream>
using namespace std;
int main()
{
 int a,b;
 char c;
 cout<<"請輸入多少行:";
 cin>>a;
 cout<<"請輸入多少列:";
 cin>>b;
 cout<<"請輸入一個字:";
 cin>>c;
 for (int i=0;i<a;i++)//for循環(huán)嵌套。在這條語句中 這個是外層循環(huán)
 {
  for (int j=0;j<b;j++)//這個是內(nèi)循環(huán) 。
  {
   cout<<c;// 意思是 當(dāng)你輸入 2 3 a 的時候  外層進(jìn)行循環(huán) 當(dāng)?shù)竭@里的時候 開始了內(nèi)循環(huán) 只有 j<3的時候 才結(jié)束
   // 結(jié)束后 輸出 換行 因為b=3 所以這里要輸出 三個a  才會結(jié)束這條語句 接著換行 因為 a=2 所以還要執(zhí)行一次這個語句
  }
  cout<<"\n";
 }
 return 0;
}
 
27:
#include <iostream>
using namespace std;
int main()
{
 int a;
 cout<<"請輸入一個值:";
 cin>>a;
 switch (a) //把 a 作為判斷的條件。
 {
 case 0:cout<<"你輸入的數(shù)字是0";//判斷用戶輸入的數(shù)字是不是0 如果是 就輸出一段話
  break;//如果上面的判斷成立  那么就跳出 switch 語句
 case 1:cout<<"你輸入的數(shù)字是1";//判斷用戶輸入的數(shù)字是不是1 如果是 就輸出一段話
  break;
 case 2:cout<<"你輸入的數(shù)字是2";//同上 下面也是一樣的意思
  break;
 case 3:cout<<"你輸入的數(shù)字是3";
  break;
 case 4:cout<<"你輸入的數(shù)字是4";
  break;
 case 5:cout<<"你輸入的數(shù)字是5";
  break;
 case 6:cout<<"你輸入的數(shù)字是6";
  break;
 case 7:cout<<"你輸入的數(shù)字是7";
  break;
 default:cout<<"你輸入的數(shù)不是1-7的有效數(shù)字\n";//如果輸入的語句都不是 0-7  那么就默認(rèn)執(zhí)行這條語句
 }
 cout<<"程序執(zhí)行完畢\n";
 return 0;
}//switch 語句比IF 語句好用的地方就是 可以進(jìn)行多次判斷 如果判斷語句過多 if 使用起來是很麻煩的。 所以用 switch 語句
 
28:
#include <iostream>
using namespace std;
int main()
{
 int a;
 cout<<"請輸入一個值:";
 cin>>a;
 switch (a)
 {
 case 0:cout<<"你輸入的數(shù)字是0";
  //break;常見錯誤 沒有break 語句 將會出現(xiàn)的錯誤 如果輸入的是 0 因為 case 0 為真 所以從這里執(zhí)行
  //但是程序沒有break 所以不會跳出循環(huán)  還會一直執(zhí)行下面的 語句 全部輸出結(jié)束 如果 輸出的是1
  //那么就從 case 1開始執(zhí)行到完畢  同理也是一樣 你輸入的數(shù)字和case 為真 那就沖那里開始執(zhí)行
  //如果超出1-2 比如 3 那么程序?qū)⒅苯虞敵?你輸入的數(shù)不是1-7的有效數(shù)字
 case 1:cout<<"你輸入的數(shù)字是1";
  //break;
 case 2:cout<<"你輸入的數(shù)字是2";
  //break;
 default:cout<<"你輸入的數(shù)不是1-7的有效數(shù)字\n";
 }
 cout<<"程序執(zhí)行完畢\n";
 return 0;
}
 
29:
#include <iostream>
using namespace std;
int main()
{
    bool b=false;//先初始化為假
 for (;;)//無限循環(huán)
 {
  int a;
  cout<<"請輸入一個值0-9 10退出:";
  cin>>a;
  switch (a)
  {
  case 0:cout<<"你輸入的數(shù)是0\n";
   break;
  case 1:cout<<"你輸入的數(shù)是1\n";
   break;
  case 2:cout<<"你輸入的數(shù)是2\n";
   break;
  case 3:cout<<"你輸入的數(shù)是3\n";
   break;
  case 4:cout<<"你輸入的數(shù)是4\n";
   break;
  case 5:cout<<"你輸入的數(shù)是5\n";
   break;
  case 6:cout<<"你輸入的數(shù)是6\n";
   break;
  case 7:cout<<"你輸入的數(shù)是7\n";
   break;
  case 8:cout<<"你輸入的數(shù)是8\n";
   break;
  case 9:cout<<"你輸入的數(shù)是9\n";
   break;//這里雖然有break 跳出 但是 他跳出的是 switch 并不是for
  case 10:b=true;//如果不輸入10  不把 b的值賦值為真,那么將無限循環(huán)
   break;
  default:cout<<"你輸入的不是1-10 的有效數(shù)字\n";
  }
  if (b==true)//跳出switch 后 會跟到執(zhí)行這條命令 但是 b 是假 所以 break 無法執(zhí)行 繼續(xù)for 循環(huán) 在跳入 switch
  {
   break;
  }
 }
 cout<<"程序執(zhí)行完畢!\n";
 return 0;
}//上面的程序比較復(fù)雜 但是都是學(xué)過的 主要是弄清楚 他的位置即可

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多