C語言到C++ 基礎1
阿新 • • 發佈:2018-11-15
從C語言到C++ 基礎及引用
#include "iostream" //包含c++標頭檔案 using namespace std; //使用名稱空間 std標準的名稱空間 void main01() { //cout 標準輸出 黑螢幕 cout << "hello...." << endl; system("pause"); } //求圓的面積 面向過程的方法 void main02() { double r = 0; double s = 0; cout << "請輸出圓的半徑:"; //輸出 cin >> r; //cin 代表鍵盤輸入 s = 3.14*r*r; cout << "圓的半徑為:" << r << endl; cout << "圓的面積為:" << s << endl; system("pause"); } //面向物件的方法 class MyCicle { public: double m_r; //半徑 屬性 成員變數 double m_s; //面積 public: void setR(double r) //成員函式 { m_r = r; } double getR() //成員函式 { return m_r; } double getS() { m_s = 3.14*m_r*m_r; return m_s; } }; //求圓的面積 面向物件的方式 //用面向物件的方法 //1 類的抽象 成員變數和成員函式 //2例項化 類的物件 //3 求面積 //面向過程加工的是類 //4 main整合測試 //思考 類是一個數據型別 定義一個類是抽象的概念,不分配記憶體 //用資料型別定義變數才分配型別 void main03() { MyCicle c1, c2, c3; //用類定義物件 double r1; cout << "請輸出c1圓的半徑:"; cin >> r1; c1.setR(r1); cout << "c1圓形的面積是:" << c1.getS() << endl; double r2; cout << "請輸出c1圓的半徑:"; cin >> r2; c2.setR(r2); cout << "c1圓形的面積是:" << c2.getS() << endl; system("pause"); }
名稱空間
#include "iostream" using namespace std; //1.檔案中iostream 沒有引入標準的std;需要手工寫 //7.如果不寫 using namespace std; 需要顯示的引入std void main04() { std::cout << "namespace test" <<std::endl; system("pause"); } //3.定義名稱空間 namespace namespaceA { int a = 10; } namespace namespaceB { int a = 20; namespace namespaceC //可巢狀 { struct Teachar { char name[32]; int age; }; } } //4.使用名稱空間 void main05() { using namespace namespaceA; using namespace namespaceB; cout << namespaceA::a << endl; cout << namespaceB::a << endl; //namespaceB::namespaceC::Teachar t1; using namespace namespaceB::namespaceC; Teachar t1; t1.age = 20; cout << t1.age << endl; system("pause"); }
引用
#include <iostream> using namespace std; //引用,給變數取別名,已定義變數的別名,很像指標 //引用在c++內部實現是一個常量指標 佔記憶體 C++編譯器內部處理 void main06() //06 { int a = 10; int &b = a; //引用語法 C++中 //普通引用必須要初始化 b = 20; cout <<"a:"<< a << endl; cout <<"b:"<< b << endl; system("pause"); } //基礎型別的引用 void myswap0(int a, int b) { int temp = 0; temp = a; a = b; b = temp; } void myswap1(int &a, int &b) { int temp = 0; temp = a; a = b; b = temp; } void main07() { int x, y; x = 10; y = 20; myswap0(x,y); cout << "x:" << x << endl; cout << "y:" << y << endl; cout << endl << endl << endl; myswap1(x, y); cout << "x:" << x << endl; cout << "y:" << y << endl; //可改變形參的值 system("pause"); } //複雜資料型別的引用 struct Teacher { char name[64]; int age; }; void printfT1(Teacher *pT) //指標 { pT->age = 33; } void printfT2(Teacher &pT)//引用 { pT.age = 44; } void main08() //08 { Teacher t1; t1.age = 22; cout << "修改前t1.age:" << t1.age << endl; printfT1(&t1); cout << "指標修改t1.age:" << t1.age << endl; printfT2(t1); cout << "引用修改t1.age:" <<t1.age << endl; system("pause"); }
返回值是引用
#include <iostream>
using namespace std;
//返回值是一個數值
int getAA0()
{
static int a = 0;
//a = 10;
return a;
}
//返回a變數的本身
//如果是static變數或者全域性變數,返回值是變數本身,可以當左值
int& getAA1()
{
static int a = 0;
//a = 10;
return a;
}
int main()
{
int a1 = getAA1(); //得到數值
int &a2 = getAA1(); //得到地址
getAA1() = 100; //引用可以是左值,可修改a的數值
int a3 = getAA1();
cout << "用int型別接收getAA1函式返回值 a1:" << a1 << endl;
cout << "用引用型別接收getAA1函式返回值 a2:" << a2 << endl;
cout << "用指標型別接收getAA2函式返回值 a3:" << a3 << endl;
cout << endl;
system("pause");
}