C++基础 —— 一个简单的C++代码及面向过程和面向对象思想求圆的面积

从hello world 开始,第一个C++代码。

#include “iostream”//包含C++的头文件。输入输出流

using namespace std;  //使用命名空间 std 标准的命名空间(在这个命名空间中定义了很多标准定义)

void main()
{
    //cout 标准输出 黑屏幕
    //<< 左移操作符 在C++里面 功能的改造(增强)===>C++ 语言操作符重载
    //endl \n
    //打印到屏幕 并且换行
    cout << “hello world …”<<endl;
    system(“pause”);
}

 

C是面向过程的语言,C++是面向对象的语言

下面分别用面向过程思想(C)和面向对象的方法(C++)求一个圆的面积。

面向过程加工的是一个一个的函数,面向对象加工的是一个一个的类。

数据处理:

输入半径 r;

计算周长 = 2*π*r

计算面积 = π*r*r

输出半径,周长,面积;

#include "iostream"

using namespace std;

//面向过程的方法
int main(void)
{
    double  r = 0;
    double  s = 0;

    cout << "请输入圆形的半径:";

        //cin 标准输入 代表键盘
        cin >> r;

    cout << "r的值是:" << r << endl;

    s = 3.14*r*r;

    cout << "圆形的面积是s:" << s << endl;    

    system("pause");
}

面向对象的方法:

//用面向对象的方法
//1 类的抽象 成员变量和成员函数
//2 实例化 类的对象
//3 求面积
    //面向过程加工的是一个一个的函数
    //面向对象加工的是一个一个的类。
//4 main 集成测试

//思考:类的调用 执行过程分析==>类代码不是一步一步执行的
//类是一个数据类型,(固定大小内存块的别名);
//定义一个类,是一个抽象的概念,不会给你分配内存
//用数据类型定义变量的时候,才会分配内存

对象其实就是用类定义的变量

#include "iostream"

using namespace std;
//在C++中 定义了一个自定义数据类型

struct Circle
{
double m_s; //圆的面积
double m_r; //圆的半径
}

//类的抽象  成员变量  成员函数
class MyCicle
{
public:
    double  m_s;  //圆的面积 属性 成员变量
    double  m_r;  //圆的半径

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 main02(void)
{
    MyCicle c1;  //用类 定义 变量 --- 对象
    double   r;
    cout << "请输入c1圆形的半径:";
    cin >> r;

    //给c1圆形的属性赋值
    c1.SetR(r);

    cout << "c1圆形的面积是:" << c1.getS()<<endl;

    system("pause");
}

void main(void)
{
    MyCicle  c1, c2;  //用类 定义 变量 --- 对象
    double   r1, r2;

    //圆形1
    cout << "请输入c1圆形的半径r1:";
    cin >> r1;
    //给c1圆形的属性赋值
    c1.SetR(r1);
    cout << "c1圆形的面积是:" << c1.getS()<<endl;

    //圆形2
    cout << "请输入c2圆形的半径r2:";
    cin >> r2;
    //给c2圆形的属性赋值
    c2.SetR(r2);
    cout << "c2圆形的面积是:" << c2.getS()<<endl;

    system("pause");
}

 

 从内存四区的角度看上面的代码为:

首先通过类型circle 定义变量double r;double pi;double area;C++编译器会分配内存;

r没有值,是个乱码,pi = 3.14,area = pi * r * r = pi*乱码*乱码

然后输入r的值,并把r赋值为相应的值,假如是10;

最后执行cout<<c1.area<<endl; 打印area的值。但是,C++编译器不会主动去调用area = pi * r * r ;

只是直接从变量所表示的内存空间中拿值,并没有执行 pi * r * r,所以是一个随机值。

所以要想执行area = pi * r * r ;必须写一个成员函数。

#include <iostream>
using namespace std; //C++的命名空间
class circle
{
public:
    double r;
    double pi = 3.14;
    double area = pi*r*r;

    double gets()
    {
        area = pi*r*r;
        return area;
    }
    
};

int main(void)
{
    circle pi;
    cout <<"请输入area"<<endl;
    cin >> pi.r;

    cout << pi.gets() <<endl; //执行函数调用,就执行了pi*r*r

    system("pause");
}

 

posted @ 2017-10-11 20:51  Liu_Jing  Views(1666)  Comments(0Edit  收藏  举报