從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");
}