C++面向对象编程<一>:简介

  • C++历史
    C++有不同的版本,如C++89,C++11等,当然如今应用最广的是C++89。其中C++由C++语言和C++标准库组成的,标准库是很重要的部分。

  • 目标
    学会写基于对象(Object Based )和面向对象(Object Oriented),简单的说:
    基于对象就是面对单一的class的设计
    面向对象是多重class的设计,得注重考虑类与类之间的关系。
    class的两个经典分类:

    1. C++ without pointer members
    2. C++ with pointer members
  • C++与C的区别
    C:数据和函数分开
    C++:数据和函数一体,从而形成一个类,类可以实例化很多对象

  • 头文件
    为防止重复声明,头文件的防御式声明格式如下:

#ifndef _COMPLEX_
#define _COMPLEX_

//声明

#endif

头文件的基本布局格式如下:

#ifndef _COMPLEX_
#define _COMPLEX_

#include <cmath>

class ostream;
class complex;   //前向声明

complex& _doapl (complex* ths, const complex& r);

class complex  //类-声明
{
...
};

complex::function //类-定义
#endif _COMPLEX_
  • class的声明
    栗子:Complex(复数类)的声明
class complex
{
    public:
        complex (double r = 0, double i = 0)
        : re(r), im(i)
        {}
        complex& operator += (const complex&);
        double real () const { return re; } 
        double imag () const { return im; }
    private:
        double re, im;

        friend complex& _doapl (complex*, const complex&);
}

使用如下

complex c1(2,1);
complex c2;

(1)数据一般是private,函数可以是private(内部处理数据)、public(供外界调用)、protected;而在外界private数据不能直接在访问,需通过public函数调用间接访问;
(2)有些函数可以直接在类里面定义,这种成员函数自动成为inline函数候选人,也可以显示声明inline函数,即使这样函数不是成员函数。inline函数和宏很相似,但又不一样,有着宏的优点,却没有宏的缺点;但不一定你在类里面定义的函数都会被编译器当作inline函数处理。

  • class template模板简介
    用模板来写complex类,如下:
template<typename T>
class complex
{
    public:
        complex (T r = 0, T i = 0)
        : re(r), im(i)
        {}
        complex& operator += (const complex&);
        T real () const { return re; }
        T imag () const { return im; }
    private:
        T re, im;

        friend complex& _doapl (complex*, const complex&);
}

使用如下

complex<double> c1(2.5,1.5);
complex<int> c2(2,6);

可以看出class template的好处:可以减少代码的重复编写(功能一样,仅数据类型不一样)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值