C++基礎(chǔ)
課程緒論
C類型檢查機(jī)制相對較弱,這使得程序中的一些錯誤不能在編譯時發(fā)現(xiàn)
C本身幾乎沒有支持代碼重用的語言結(jié)構(gòu)象对,很難重用
當(dāng)程序的規(guī)模達(dá)到一定的程度時,程序員很難控制程序的復(fù)雜性
C++的優(yōu)勢
C++被認(rèn)為是一種更好的C,或者說是C的超集
C中麻煩與含糊的地方都在C++得到了解決
C++包含C所有的特性
支持OOP面向?qū)ο蟮木幊?/li>
結(jié)合smalltalk與c的優(yōu)勢
面向?qū)ο蟮脑O(shè)計(jì)理念
出發(fā)點(diǎn):
更直接的描述客觀世界中存在的事物(對象)以及他們直接按的關(guān)系
特點(diǎn)
是高級語言
將客觀事物做具有屬性和共同屬性的對象
通過抽象找出同一類對象的共同屬性和行為叶圃,形成類
通過類的繼承和多態(tài)實(shí)現(xiàn)的代碼公用
優(yōu)點(diǎn)
使程序能夠直接的反應(yīng)問題域和本來的面目袄膏,軟件開發(fā)人員能夠利用用人類認(rèn)識事物所采用的一般思維方法進(jìn)行軟件算法
C語言回顧
C語言關(guān)鍵字
數(shù)據(jù)類型:signed unsigned void short long char int float double struct enum union
流程控制:if else switch case default for while do continue break return goto
存儲類型和其他:auto regist(注冊) volatile(揮發(fā)性的,不穩(wěn)定的) static(靜態(tài)的) typedey const extern(外來的)
sizeof.
運(yùn)算符
函數(shù)和指針
函數(shù)的三要素:返回值掺冠,函數(shù)名沉馆,參數(shù)列表
函數(shù)的編碼規(guī)范:
函數(shù)名必須有意義
一個函數(shù)的長度不要超過一個屏幕
指針:存放的是變量的地址
注意事項(xiàng):
野指針問題:
1. 未申請空間,賦值:
char *ch;
strcpy (ch,"hello");
2. 釋放空間后德崭,賦值:
free(ch);
strcpy(ch,"hello");
內(nèi)存泄漏
char *ch=malloc();//0x45
ch=malloc();
雙釋放
free();
free();
C++與C不同的地方
C++源文件后綴
.cc (linux)
.cpp (windows)
簡單的hello world
#include <stdio.h>
void main()
{
printf("hello world\n");
}
#include <iostream>
int main(int argc,char**argv)
{
std::cout<<"hello world"<<std::end1;//std:標(biāo)準(zhǔn)命名空間斥黑,以后遇到命名沖突時,編譯器會提醒眉厨,程序員可以強(qiáng)制寫入System::nLibrary或Graphics::nLibrary來使用該常量
return 0;
}
可以連續(xù)輸出
#include <iostream>
using namespace
int main()
{
int a=1;
std::cout<<"hello world"<<%d<<std::endl;
}
可以這樣使用
#include <iostream>
using namespace std;
namespace A
{
int a=10;
}
namespace B
{
int a=20;
}
int a=100;
int main()
{
cout<<"hello world"<<a<<A::a<<B::a<<endl;
cout<<::a<<endl;
}
程序解釋
C++程序生成的三個步驟
預(yù)處理:
交由預(yù)處理器處理的指令以#打頭
預(yù)處理器要獲得<iostream>頭文件所有的內(nèi)容并使之對當(dāng)前文件可用
編譯
鏈接
標(biāo)準(zhǔn)流的設(shè)備名
cin : stdin 標(biāo)準(zhǔn)輸入
cout:stdout 標(biāo)準(zhǔn)輸出
cerr:stderr 標(biāo)準(zhǔn)錯誤
cprn:stdprn 打印
流插入運(yùn)算符:<<可實(shí)現(xiàn)流的輸出
C++的輸入輸出可以實(shí)現(xiàn)自適應(yīng)
int a=3;
//char a=71;
std::cout<<a<<std::endl;//第一個輸出3锌奴,第二個輸出G;
標(biāo)準(zhǔn)輸出效果
#include <iostream>
//int a=71;
//char a=71;
char a[20]="abc";
int main()
{
std::cout<<a<<std::endl;//abc
std::cout<<a<<std::endl;//a地址
}
用成員輸出函數(shù)put可以達(dá)到輸出一個字符的效果:
cout.put(‘A’).put(‘\n’);
cin標(biāo)準(zhǔn)輸入效果
#include <iostream>
int a;
int main()
{
std::cin>>a;
std::cout<<"a= "<<a<<std::endl;
//如果是char a:輸1出1憾股,輸11出1缨叫,輸s出s
}
與C的輸入輸出的比較
比printf,scanf更強(qiáng)大
可以自動識別基本數(shù)據(jù)類型
采用流算子來控制格式
文件I/O也用流荔燎。
命名空間是為了避免兩個程序員使用相同的名字造成沖突耻姥。
流讀取運(yùn)算符通常會跳過輸人流中的空格、tab鍵有咨、換行符等等的空白字符琐簇,以后將介紹如何改變這種行為。
當(dāng)遇到輸入流中的文件結(jié)束符時座享,流讀取運(yùn)算符返回0(false);否則婉商,流讀取運(yùn)算符返回對調(diào)用該運(yùn)算符的對象的引用。
每個輸入流都包含一組用于控制流狀態(tài)(即格式化渣叛、出錯狀態(tài)設(shè)置等)的狀態(tài)位丈秩。
當(dāng)輸入類型有錯時,流讀取運(yùn)算符就會設(shè)置輸人流的failbit狀態(tài)位淳衙;
如果操作失敗則設(shè)置badbit狀態(tài)位蘑秽,后面會介紹如何在I/O操作后測試這些狀態(tài)位。
最后編輯于 :2017.12.04 07:41:39
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者