c++基础视频笔记 4 类相关知识

静态成员变量和静态成员函数

●静态成员变量:
注意:
 编译阶段分配内存
 所有对象共享同一个数据
 有权限控制,private通过类名类外初始化

访问:
 可以通过对象访问,也可以通过类名访问

使用:
 类内声明,类外初始化

●静态成员函数:
注意:
 可以访问静态成员变量,不可以访问普通成员变量(静态成员变量是共享的,静态成员函数不能区分是哪个对象的普通对象)
 没有this指针,可以被pthread_create调用(见线程池文章)
 有权限控制

访问:
 可以通过对象访问,也可以通过类名访问

单例模式

目的:让类中只有一个实例,实例不需要自己释放,如线程池类,日志类

使用:
 将构造函数和拷贝构造函数私有化,不能类外创建对象
 对外提供getinstance()方法来访问唯一实例

(懒汉饿汉见日志那篇文章)

C++对象模型初探

 成员变量和成员函数分开存储

 成员函数不属于对象,函数是共享的,通过this指针区分调用函数的对象

 空类的大小为1,,每个实例的对象有独一无二的地址,char维护这个地址

 只有非静态成员变量才属于对象

this指针的使用

指针永远指向当前对象

解决命名冲突:this->a = a;

非静态成员函数才有this指针

函数体作为左值:1.函数声明中返回引用 (不然就会返回副本) 2.函数体return *this;

空指针(A *a = NULL;)

如果成员函数没用到this,那么空指针可以访问

如果成员函数用到this指针,要注意加if判断,this为NULL就return

类内常函数 常对象

●常函数 : void func() const {}
 不能修改this指针指向的值

●常对象:const A a;
 不允许修改属性
 不可以调用普通的成员函数,只能调用常函数

●mutable:使得在常函数中也能修改

友元

●全局函数做友元函数
使用:类中声明全局函数,并在最前面加friend
作用:访问类内私有成员

●整个类做友元类
使用:friend class 类名
注意:单向,不可传递

●成员函数做友元函数
使用:friend void A::func();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值