美文网首页
Geekband C++ 第一周

Geekband C++ 第一周

作者: billow06 | 来源:发表于2016-07-19 11:08 被阅读0次

    ● 概述:以c++标准库中的complex对象为例,介绍了成员无指针的类的基本写法

    ● c++的历史
    ○ 1.0:c++98
    ○ 2.0:c++11

    ● c++代码的基本形式
    ○ 头文件:1)用户定义头文件;2)标准库
    ○ 用户代码

    ● 头文件设计
    ○ 头文件的防御式声明:避免多次包含同一段代码
    ■ #ifndef ... #endif
    ○ 头文件的布局
    ■ 0:前置声明
    ■ 1:类的声明
    ■ 2:类的定义

    头文件布局

    ● 类的声明
    ○ 包括class head和class body:complex类的声明如
    ○ 内联函数
    ■ 直接在类内定义的函数为inline函数(当然最终是否以inline形式展开取决于compiler)
    ■ 在类外部定义内联函数:(函数返回值前加)inline
    ○ 私有成员和公有成员
    ■ 数据:一般声明为私有成员

    Complex类声明

    ● 构造函数
    ○ 没有返回值,与类同名
    ○ 初始化方式
    ■ 使用初始化列表,而不是在构造函数中对私有成员赋值
    ○ 一般是公有成员,但也可以声明为私有成员
    ■ Singleton设计模式

    ● 常成员函数
    ○ 函数声明时加const关键字:明确表示不改变对象的数据
    ○ 常对象:const complex c1(2, 1) 只能调用常成员函数,调用其他函数会报错(因为普通函数有可能改变常对象的成员,这是矛盾的!)

    ● 设计函数时:参数传递和返回值传递
    ○ 参数传递
    ■ 值传递:需要拷贝对象到栈
    ■ 引用传递:一般采用引用传递,速度快(只需要传递对象的地址)
    ○ 返回值
    ■ 一般返回引用
    ■ 但是局部对象不能返回引用(局部对象的生存期在返回语句之后结束)

    ● 友元
    ○ 类中,函数声明时加 friend 关键字,函数定义时不需要加 friend关键字
    ○ 注意:相同class的object互为友元,于是有下边的代码

    例:class的object互为友元

    ● 操作符重载:
    ○ 形式:例:inline complex& coplex::operator +=(const complex & x) {}
    ○ 返回值:可以是void,但不支持连续操作,比如c1+=c2+=c3;返回引用支持连续操作
    ○ 成员函数:默认使用this指针,指向operator的第一个对象
    ○ 如果操作数不是class的object
    ■ 使用非成员函数
    ○ 注意:一个有趣的用法,这些函数返回的是一个临时的对象
    ■ 生成临时对象的用法:typename(),比如int(7), complex(2,1)
    ■ return complex(real(x) +y, imag(x))

    例:返回临时对象

    相关文章

      网友评论

          本文标题:Geekband C++ 第一周

          本文链接:https://www.haomeiwen.com/subject/zvrmjttx.html