class 关键字提供了一种包含机制,将数据和操作数据的方法结合到一起,作为内置类型来使用。

类可以包含私有部分,仅其成员和 friend 类访问,公有部分可以在程序中任意位置处访问。

构造函数与类重名。析构函数用来定义对象销毁时操作。

class pt2d { // class for 2D points
private: // private members
double x; // x coordinate
double y; // y coordinate public: // public members
pt2d(double r, double s) { // constructor
x = r; y =s;
}
void move(double, double); // move to new position
void move(pt2d); // move to new position
void draw() const; // a const member
friend double norm(pt2d); // a friend
};

在类的定义中,符号 :: 用来在类外部定义成员。

const 后缀定义的方法只能读取成员变量,但是不能对成员变量进行修改。

在类的方法中,可以直接使用属性名对属性值进行操作,而其他对象的属性则需用 . 号对其进行索引。

友元(friend)不属于类,但是可以访问类的成员。

在函数声明中定义的函数默认为 inline 函数。

对私有属性的保护使得自定义类更加安全,也更容易维护。

可以提供多个构造函数,程序会按照参数选择对应的构造函数进行操作。

没有参数的构造函数为默认构造函数。

struct 是默认类型都为 public 的类。

关键字 this 为一常指针指向方法所对应的对象。

Copy Constructors and Copy Assignments

通常情况下,当类中没有显式定义 copy constructor 与 assignment operator 的话,会默认生成一个对逐个成员进行复制的初始化方法。

销毁对象时,析构函数不需要用户显式进行调用,申请的空间会自动销毁。

但是若类中包含指针,且多个对象内指针指向同一个向量,因此这个向量会被销毁多次,造成错误。

operator 作为关键字允许类对操作符=进行重载,例如

T& T: :operator=(const T&);

this 为指向对象的向量,因此 *this 为对象实体。

Firend

友元可以属于许多类里,并且可以访问类的私有成员和属性。

友元不是类成员因此没有 this 指针。

一个类可以是其他类的友元,因此此类的所有方法都是友元。

class X{
void f();
int g(int);
}; class Y{
// ... in addition to other members
friend void X::f(); // f() of X becomes friend of Y
}; class Z{
// ... in addition to other members
friend class X; // all functions of X become friends of class Z
};

Static Members

C++ 提供静态成员来避免全局变量的使用。

静态方法,当一个函数需要访问类的成员,但是不属于特定的对象时,可以声明为静态方法。

由于静态成员不属于特定的对象,因此其引用必须用类名称与双冒号进行索引。

静态变量的定义与变量的声明与初始化相同,也类似与函数的声明。

尽管静态变量的私有的,但是它可以不通过成员函数定义。

Constant and Mutable Members

constant 成员方法不修改类型的对象。

当一个成员变量声明为 mutable 时,它可以由常成员方法进行修改。

Class Objects as Members

一个类可以作为其他类的成员变量,而这个变量初始化可以与其他成员不同。

成员对象初始化通过构造函数内的初始化列表内实现。

构造成员对象的初始化在类自身的构造函数之前调用,例如

class line{
pt2d oneend;
pt2d otherend;
bool direction;
public:
line( pt2d, pt2d, bool );
line( pt2d, bool );
} line:: line( pt2d a, pt2d b, bool dir ): otherend(b), oneend(a) {
direction = dir;
} line: :line (pt2d b, bool dir): oneend(), otherend(b) {
direction = dir;
}

Array of Classes

当类有默认构造函数时,可以定义此类的向量。

当类没有默认构造函数时,则无法直接定义此类的向量。

Pointers to Members

C++ and OO Num. Comp. Sci. Eng. - Part 5.的更多相关文章

  1. C++ and OO Num. Comp. Sci. Eng. - Part 4.

    命名空间与文件(Namespaces and Files) 在 C++ 中,命名空间为包含相关声明与定义的逻辑单元. 将一个大程序分割为不同部分并且将其储存在不同的文件中可以实现模块化编程. 未命名的 ...

  2. C++ and OO Num. Comp. Sci. Eng. - Part 3.

    2. Expressions and Statements 声明是将一个种类型的变量引入程序的语句. 作用域 作用域又一对花括号限定,在所有花括号之外的为全局作用域. 在作用域内声明的变量为局部变量. ...

  3. C++ and OO Num. Comp. Sci. Eng. - Part 2.

    本文参考自<C++ and Object-Oriented Numeric Computing for Scientists and Engineers>. 1. Basic Types ...

  4. C++ and OO Num. Comp. Sci. Eng. - Part 1.

    本文参考自 <C++ and Object-Oriented Numeric Computing for Scientists and Engineers>. 序言 书中主要讨论的问题是面 ...

  5. 2008 SCI 影响因子(Impact Factor)

    2008 SCI 影响因子(Impact Factor) Excel download 期刊名缩写 影响因子 ISSN号 CA-CANCER J CLIN 74.575 0007-9235 NEW E ...

  6. 2012年中国科学技术信息研究所发布自然科学SCI(E)论文期刊分区列表

    分区 期刊名称 ISSN 学科名称 学科名称(中文) 总被引频次 影响因子 5年影响因子 即年影响因子 被引半衰期 特征因子 论文影响指标 1区 ACM COMPUT SURV 0360-0300 C ...

  7. 软件工程卷1 抽象与建模 (Dines Bjorner 著)

    I 开篇 1. 绪论 II 离散数学 2. 数 (已看) 3. 集合 4. 笛卡尔 5. 类型 6. 函数 7. λ演算 8. 代数 9. 数理逻辑 III 简单RSL 10. RSL中的原子类型和值 ...

  8. 2015影响因子Excel版

    现在终于有影响因子2015的Excel版了,这个版本除了还包括杂志全称和缩写等基本信息还,包括中科院分区, 应该是迄今2015影响因子最奢华的版本了吧. 看了这个版本,发现中国的SCI杂志还是不少的, ...

  9. 基于 MySQL 的数据库实践(准备工作)

    背景 本学期在北京大学选修了<数据库概论>的实验班课程,由于 SQL 语法并不是特别理论的内容,因此课上暂时也没有特别展开.出于探索数据库领域的兴趣,使用国内普遍使用的数据库软件 MySQ ...

随机推荐

  1. 代码混淆保安全「GitHub 热点速览 v.21.43」

    作者:HelloGitHub-小鱼干 虽然让代码难以阅读看似是件难以理解的事情,但是混淆后的代码起到了类似加密的作用,而且经过混淆的代码依旧能实现原代码的功能.javascript-obfuscato ...

  2. 【UE4 设计模式】状态模式 State Pattern

    概述 描述 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类. 其别名为状态对象(Objects for States),状态模式是一种对象行为型模式. 有限状态机(FSMs) ...

  3. 写了10000条Airtest截图脚本总结出来的截图经验,赶紧收藏!

    前言 今天想先给大家分享1个小白用户的Airtest从入门到放弃的故事: 小A是一个自动化的小白,在逛测试论坛的时候,偶然间发现了Airtest这个基于图像识别的UI自动化框架. 出于好奇,小A试用了 ...

  4. [对对子队]会议记录5.14(Scrum Meeting1)

    今天已完成的工作 何瑞 ​ 工作内容:初步完成循环指令系统 ​ 相关issue:实现循环语句系统的逻辑 ​ 相关签入:feat:循环语句的指令编辑系统初步完成 吴昭邦 ​ 工作内容:将流水线系统和循环 ...

  5. [敏捷软工团队博客]The Agiles 团队介绍&团队采访

    项目 内容 课程:北航-2020-春-敏捷软工 博客园班级博客 作业要求 团队作业-团队介绍和采访 团队名称来源 The Agile is The Agile. 敏捷就是敏捷.我们只是敏捷的践行者罢了 ...

  6. 21.7.31 test

    \(NOIP\) 测试 好久没有这种感觉能阿克的冲动了!但还是挂了分 T1 WOJ2608(模拟,拓扑排序) 签到题,直接模拟,有点像拓扑排序. 要给点打标记不然可能被某次操作中弹出多次该点导致WA ...

  7. 【做题记录】 [JLOI2011]不等式组

    P5482 [JLOI2011]不等式组 超烦人的细节题!(本人调了两天 QAQ ) 这里介绍一种只用到一只树状数组的写法(离线). 树状数组的下标是:所有可能出现的数据进行离散化之后的值. 其含义为 ...

  8. Nginx(三):Linux环境(Ubuntu)下Nginx的安装

    Nginx 是一位俄罗斯人 Igor Sysoev(伊戈尔·塞索斯夫)编写的一款高性能HTTP和反向代理服务器. Nginx 主要是有C编写的,安装Nginx需要GCC编译器(GNU Compiler ...

  9. Java设计模式——模板设计模式

    模板设计模式 1.模板模式简介 模板模式(Template ):模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑 ...

  10. set prompt = "任意匹配字符" 当前目录详解

    转载:https://blog.csdn.net/alexdream/article/details/6865730 研究了两天的FreeBSD,总是感觉输入提示符那里怪怪的,而且默认的提示符还不带显 ...