C++ Prime 中文版第五版 第七章 类 笔记

1.类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程。
2.定义在类内部的函数是隐式inline函数。
3.this的目的总是指向"这个"对象,所以this是一个常量指针。
4.C++语言的做法是允许把const关键字放在成员函数的参数列表之后,此时,紧跟在参数列表后面的const表示this是一个指向常量的指针。像这样使用const的成员函数被称作常量成员函数。
5.常量对象,以及常量对象的引用或指针都只能调用常量成员函数。
6.一般来说,如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件内。
7.构造函数不能被声明成const的。
8.只有当类没有声明任何构造函数时,编译器才会自动地生成默认构造函数。
9.如果类包含有内置类型或者复合类型的成员,则只有当这些成员全部被赋予了类内的初始值时,这个类才适合于使用合成的默认构造函数。
10.在C++11中,如果我们需要默认的行为,那么可以通过在参数列表后面写上=default来要求编译器生成构造函数。其中,=default既可以和声明一起出现在类的内部,则默认构造函数是内联的,也可以作为定义出现在类的外部。
11.构造函数不应该轻易覆盖掉类内的初始值,除非新赋的值与原值不同。如果你不能使用类内初始值,则所有构造函数都应该显式的初始化每个内置类型的成员。
12.struct和class的默认访问权限不一样,struct默认的是public,class默认的是private。
13.类可以允许其他类或者函数访问它的非公有成员,方法是令其他类或者函数成为它的友元。友元的声明只能出现在类的内部,具体位置不限,且不受访问权限控制。一般来说,最好在类定义开始或者结束的位置集中声明友元。为了使友元对类的用户可见,通常把友元的声明和类本身放置在同一个头文件中。
14.许多编译器并未强制限定友元函数必须在使用之前在类的外部声明。
15.typedef std::string::size_type pos;等价于using pos = std::string::size_type;如果是在类内,用来定义类型的成员必须先定义后使用。因此,类型成员通常出现在类开始的地方。
16.我们可以在类的内部把inline作为声明的一部分显式的声明成员函数,也可以在类的外部用inline关键字修饰函数的定义,同时声明也是合法的,不过,最好只在类的外部定义的地方说你inline,这样可以使类更容易理解。
17.和我们在头文件中定义inline函数的原因一样,inline成员函数也应该与相应的类定义在同一个头文件中。
18.一个const成员函数可以改变一个可变成员的值。
19.当我们提供一个类内初始值时,必须以符号=或者花括号表示。
20.一个const成员函数如果以引用的形式返回this,那么它的返回类型将是常量引用。
21.即使两个类的成员列表完全一致,他们也是不同的类型。对于一个类来说,它的成员和其他任何累的成员都不是一回事儿。
22.对于一个类来说,一旦一个类的名字出现后,它就被认为是声明过了(但尚未定义),因此类允许包含指向它自身类型的引用或指针。
23.如果一个类指定了友元类,则友元类的成员函数可以访问此类包括非公有成员在内的所有成员。
24.友元关系不存在传递性,每个类负责控制自己的友元类或友元函数。
25.当把一个成员函数声明成友元时,我们必须明确指出该成员函数属于哪个类。
26.
struct X{
friend void f(){ /
友元函数可定义在类内部}
X(){ f();} //错误:f还没有被声明
void g();
void h();
}
void X::g(){ return f(); } //错误:f还没有被声明
void f();
void X::h(){ return f(); } //正确
27.编译器处理完类中的全部声明后才会处理成员函数的定义。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值