传智C++课程笔记-1
編譯環(huán)境 VS2008
下面是使用面向?qū)ο蟮姆椒ň帉慍++程序,實(shí)現(xiàn)輸入圓的半徑輸出圓的周長和面積的C++程序
#include <iostream> //包含C++的頭文件using namespace std; //使用一個標(biāo)準(zhǔn)的命名空間void main01() {//printf("hello world!\n");cout << "hello world!"<<endl;system("pause");//return 0; }//編寫一個求圓的面積的函數(shù) //使用面向過程的方法求解一個圓的面積以及周長 int main02() {double r = 0; //double s = 0,grith = 0;const double pi = 3.141159;cout<<"請輸入圓的半徑:";cin>>r;grith = 2*pi*r;s = pi*r*r;cout<<"圓的半徑為:"<<r<<endl;cout<<"圓的面積為:"<<s<<endl;cout<<"圓的周長為:"<<grith<<endl;system("pause");return 0;}class Circle{ public: //類的訪問控制double radius;void Set_Radius(double r){radius = r;};double Get_Radius(){return radius;};double Get_Grith(){return 2*3.14f*radius;}; //通過成員函數(shù)獲取成員變量double Get_Area(){return 3.14f*radius*radius;}; };//使用面向?qū)ο蟮姆椒ň帉懸粋€程序,獲取圓的半徑,最后輸出圓的周長和圓的面積//在C++中變量有一個好聽的名字叫做屬性 int main() {Circle A,B; //用類定義兩個對象double r = 0,R =0;cout << "請輸入R1的值:";cin >> r;cout << "請輸入R2的值:";cin >> R;A.Set_Radius(r); //類的調(diào)用cout << "A.Radius = " << A.Get_Radius() << endl;cout << "A.Grith = " << A.Get_Grith() << endl;cout << "A.Area = "<< A.Get_Area() << endl;B.Set_Radius(R); //類的調(diào)用cout << "B.Radius = " << B.Get_Radius() << endl;cout << "B.Grith = " << B.Get_Grith() << endl;cout << "B.Area = "<< B.Get_Area() << endl;system("pause"); //實(shí)現(xiàn)讓程序調(diào)試運(yùn)行的時候能夠停留在這個頁面方便程的調(diào)試return 0; } #include<iostream> using namespace std;//c++的命名空間 class circle { public:double r;double pi = 3.1415926;double area = pi*r*r; };// 2010編譯不通過 但是在2013編譯器能編譯通過 int main() {circle c1; //c1在對象初始化的時候進(jìn)行了相應(yīng)的對象的初始化,也就是進(jìn)行了 // //double r; //double pi = 3.1415926; //double area = pi*r*r; //cout << "please input your r" << endl;cin >> c1.r; //這個時候雖然對r進(jìn)行了賦值但是這時已經(jīng)不在進(jìn)行pi和area的運(yùn)算;cout << c1.area << endl; //亂碼,在調(diào)用的時候其實(shí)的得到的是r,沒有初始化時的內(nèi)存空間的值area,所以area是一個很大的值system("pause");return 0; } #include <iostream> #include <string.h> #include <stdlib.h> using namespace std;//文件iosream中沒有引入標(biāo)準(zhǔn)的 std;需要程序員手工的寫 int main31() {system("pause");return 0; } //怎樣定義一個命名空間 namespace namespaceA {int a = 10;} namespace namespaceB {int a = 20;namespace namespaceC{struct Teacher{char name[32];int age ;};} }//使用命名空間int main() {char buff[25];int i = 3;sprintf(buff,"%d",i);using namespaceA::a ;cout <<a << endl;system("pause");return 0; }和C語言相比C++的實(shí)用性增加主要是:
- C語言的變量必須在作用域開始的地方定義C++中更加強(qiáng)調(diào)語言的使用性,所有的變量都能夠在使用的時候在定義;
register關(guān)鍵字增強(qiáng)
register關(guān)鍵字請求編譯器讓變量a直接放在寄存器里面,速度快,因此在C語言中register修飾的變量不能夠取地址,但是在C++中能夠取得register變量的值。
在C++中register主要有一下的變化:
C++編譯器有自己的優(yōu)化方式,不使用register也能夠做優(yōu)化,C++中能夠取得register變量的地址。
C++中變量檢測增強(qiáng),在C語言中 重復(fù)的定義多個同名的全局變量是合法的,但是在C++中不允許同時定義多個同名的全局變量,在C語言中多個同名的全局變量會被鏈接到全局?jǐn)?shù)據(jù)區(qū)域的的同一個地址空間上;
struct類型增強(qiáng)
C語言的struct定義了一組變量的集合,C編譯器并不認(rèn)為這是一種新的類型,C++中struct是一個新類型的定義聲明
C++中所有的變量和函數(shù)都必須有類型的聲明C語言中的默認(rèn)類型在C++中是不合法的
C++中新增Bool類型的關(guān)鍵字并且C++中Bool類型的數(shù)據(jù)只有兩種取值,true和false,理論上bool只占一個字節(jié)。如果多個bool類型放在一起可能各占一個bit,這取決于編譯器得到實(shí)現(xiàn),
三目運(yùn)算符在C和C++編譯器的實(shí)現(xiàn)
- 三目運(yùn)算符在C語言中,返回變量的值,不能作為變量使用,
- 三目運(yùn)算符在C++中返回的是變量本身,能夠作為左值并能夠放在程序的任何地方
但是當(dāng)三目運(yùn)算符中返回值有一個可能是常量值的時候,則不能作為左值使用(a < b ? 1 : b) = 30;因?yàn)橛锌赡芊祷氐氖浅A?,因此不能夠做左值;
- -
總結(jié)
以上是生活随笔為你收集整理的传智C++课程笔记-1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宏基因组大数据分析的质量控制流程规范
- 下一篇: 2017第二届中国信息通信大数据大会将于