C++从零开始——类与对象(1)

####   什么是类   ####

    定义一个类,本质上是定义一个数据类型的蓝图。实际上并没有定义任何数据,其实是定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中>。类定义后必须跟着一个分号或一个声明列表:

 class 类名{成员变量 成员函数声明};
####   什么是对象   ####

        类提供了对象的蓝图,所以基本上,对象是根据类来创建的。声明类的对象,就像声明基本类型的变量一样:

类名 对象名;
####   类的构成   ####
1,数据成员(data mumber)/成员变量/属性 :对象内部数据和状态,只能在类定义中声明>,可以在成员函数中直接调用
2,成员函数/方法 : 对象相关的操作,可以在类内实现或类外实现

####   限定符   ####

private(默认):私有
public:公共
protected:保护
注意:在实践中,成员变量多数情况使用private和protected,成员函数多数使用public。
通常,通过成员函数改变对象的成员变量。

源代码:Complex.cpp

#include <iostream>
using namespace std;

class Complex{  //定义类
private:  //限定符的使用
        double real;
        double imag;
public:
        void Init(double r,double i)  //类中成员函数
        {
                real = r;
                imag = i;
        }
        void Plus(Complex other)
        {
                real += other.real;
                imag += other.imag;
        }
        void Print()
        {
                cout << real;
                if(imag != 0)
                {
                        cout << showpos << imag << "i" << noshowpos;
                }
                cout << endl;
        }

};
int main()
{
        Complex num;  //实例化对象
        num.Init(10,20);
        Complex num1;
        num1.Init(2,3);
        num.Plus(num1);

        num.Print();

}

####   类定义与类实现分离   ####

1,头文件(.h)
作用:定义类,类成员变量,声明成员函数等
方式:#pragma once 或者#ifndef \n #define 识别符 ...... #endif (防止二次编译)

2,源文件(.cpp)
作用:实现成员函数定义
方式:#include "头文件名"

实例1:

1,头文件    (Complex.h)

#pragma once
#include <iostream>

class Complex{    //定义类,类名Complex
private:    //限定符:标示以下成员变量私有
        double real;    //定义类成员变量
        double imag;
public:    //限定符号:标示以下函数声明共有
        void Init(double r,double i);    //函数声明
        void Plus(Complex other);
        void Print();

};
2,源代码    (Complex.cpp)

#include <iostream>
#include "Complex.h"    //添加头文件

using namespace std;

void Complex::Init(double r,double i)    //函数定义;Complex:: 标示该函数属于类Complex
{
        real = r;
        imag = i;
}
void Complex::Plus(Complex other)
{
        real += other.real;
        imag += other.imag;
}
void Complex::Print()
{
        cout << real;
        if (imag != 0)
        {
                cout << showpos << imag << "i" << noshowpos;
        }
        cout << endl;
}
3,测试代码    (test.cpp)

#include <iostream>
#include "Complex.h"

int main()
{
        Complex num;    //实例化对象
        num.Init(2,4);

        Complex num1;
        num1.Init(1,-6);

        num.Plus(num1);

        num.Print();
        return 0;
}

确保上面三个文件在同一目录下;执行:

g++ Complex.cpp test.cpp -o Complex
./Complex

结果显示:
3-2i


实例2:

1,头文件:BillTest.h

#pragma once
#include <string>

using std::string;

class Bill{
private:
        string name;
        double price;
        int num;
public:
        void Init(string n,double p,int c);
        void Print();
        double GetDisscount();
};

2,源代码:BillTest.cpp

#include <iostream>
#include "BillTest.h"

using namespace std;

void Bill::Init(string n,double p,int c)
{
        name = n;
        price = p;
        num = c;
}

void Bill::Print()
{
        cout << "name:" << "\t" << name << endl;
        cout << "price:" << "\t" << price << endl;
        cout << "num:" << "\t" << num << endl;
}
double Bill::GetDisscount()
{
        return price*num;

}

3,测试代码:test.cpp

#include <iostream>
#include "BillTest.h"
using namespace std;

int main()
{
        Bill g1;
        g1.Init("apple",2.01,7);
        g1.Print();
        double dis;
        dis = g1.GetDisscount();
        cout << "Disscount:" << "\t" << dis << endl;
        return 0;
}
确保上面三个文件在同一目录下;执行:
g++ BillTest.cpp test.cpp -o BillTest
./BillTest

结果显示:
name:    apple
price:    2.01
num:    7
Disscount:    14.07



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值