C++: 类(class) 随笔

随手记录下一些对C++中类的理解,只是当做自己的学习笔记,大致地列举一下知识点,如有错误,还请指正。
主要是给自己梳理一下知识,还有记录一些关键点,所以会省略一些我觉得显而易见的内容,以免重点不清,层次错乱。

成员变量:

C++的类中的成员变量可以在定义的时候初始化,也可以在构造器中初始化。如果都没有的话,会使用默认初始化。这样是非常危险的!如int型就会生成一个随机值,程序运行的时候就会出错。
被关键字mutable修饰过的变量总是可变的,即使它是const变量。

成员函数:

成员函数必须声明在类内,可以定义在类外,在类外定义时需要指定类名。如:

返回类型 类名::函数名(形参列表) {函数体}

成员函数的一些特性:
1. 在函数体内有一个隐式的指针this指向当前对象, 我们可以在函数体之前添加一个const来将它变成常量版本。
2. 可以通过const重载,返回一个类型和该类型的常量版本是不同的。这点跟指针和引用相同。
3. 在类的内部定义的成员函数默认是内联(inline)的。在外部定义的成员函数可以在定义处或声明出显式地指定内联。

构造器:

只要类的对象被创建,就会执行构造函数;反之,构造函数不执行,类就不能被创建(确实会有这个问题- -!)。
构造函数没有返回类型,不能被声明成const的。
构造函数的构造函数初始值列表会覆盖类内初始值!但我们不该这么做; const和引用必须初始化

构造函数初始值列表有一个特性是:不限定初始化的具体执行顺序,所以我们应该尽量避免使用某个成员初始化另一个成员。这是C++的缺陷吗?

默认构造器可以用 =default创建

委托,委托构造函数会执行函数体!

构造函数可以在外部定义

如果想定义一个使用默认构造函数进行初始化的对象,正确的方法是去掉对象名之后的空括号对!(不然就丢人了)

友元:

在类内加一条friend声明,友元可以访问类的非公有成员。友元可以是类、函数、或其他类的成员函数。
友元的声明仅仅是指定了访问权限,而不是一个真正的声明。如果要使用友元函数,还得再次声明。通常将友元的声明放在与类同一个文件中,友元可以在类内部定义。

访问控制:

C++有3个访问权限:public protected private
struct定义的话默认是public,class定义的话默认是private
public:就能够在类外通过对象访问,包括它的派生类。
protected:它仅能在类内和友元访问和它的派生类访问。
private:它仅能在类内和友元访问,不能被它的派生类访问。

类继承的时候也能使用权限说明符,以后再介绍。

类型的别名

除了定义数据和函数之外,类还可以自定义某种类型的别名。它同样存在访问限制,可以是public或private中的一种。

typedef string NAME;
using NAME = string;

使用类型的别名提供了方便,也能更好地封装。

静态成员

名字的查找

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值