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