day06 静态成员、成员指针、操作符重载
来源:互联网 发布:unity3d资源包 编辑:程序博客网 时间:2024/05/19 06:35
1 构造函数初始化表
2 this指针
3 常函数(常成员函数),mutable关键字
4 析构函数
========
十七 拷贝构造和拷贝赋值
1 浅拷贝和深拷贝问题
2 ...
=========
3 类的缺省拷贝赋值和缺省的拷贝构造一样,是浅拷贝。为了得到深拷贝的效果,必须自己定义拷贝赋值运算符函数
类名& operator=(const 类型& that){
if(this != &that){//防止自赋值
//分配新内存
//释放旧内存
//拷贝数据到新内存
}
return *this;//返回自引用
}
练习:为Integer类增加深拷贝赋值实现
=========================================
十八 静态成员
1 静态成员变量
语法:
class 类名{
static 数据类型 变量名;//声明
};
数据类型 类名::变量名 = 初值;//定义和初始化
1)非静态成员变量是属于对象,但是静态成员变量不对象对象。
2)不能在构造函数中定义和初始化,需要在类的外部单独的定义和初始化。
3)静态成员变量和全局变量类似放在全局区
4)静态成员变量访问作用域被限制在类中,可以通过类名去访问,也可以通过对象去访问。
类名::静态成员变量名
对象名.静态成员变量名
5)静态成员使用受到访问控制属性影响。
2 静态成员函数
class 类名{
static 返回类型 函数名(形参表){...}
};
1)可以通过"类名::"去访问,也可以通过对象访问
2)静态成员函数没有this指针,也没有常属性
注:在静态成员函数中只能访问静态成员,非静态成员函数中既可以访问静态成员也可以访问非静态成员。
//笔试题:什么叫做单例模式,简述创建方式
3 单例模式
一个类只允许存在唯一的对象实例。
1)禁止在外部创建对象:私有化构造函数
2)类的内部维护唯一的对象:静态成员变量
3)提供访问单例对象方法:静态成员函数
4)创建两种方法:
--》饿汉式:无论用于不用,在程序启动即创建
--》懒汉式:用的时候再创建,不用即销毁
十九 成员指针(了解)
1 成员变量指针
1)语法
类型 类名::*成员指针名 = &类名::成员变量;
class Student{string name};
Student s;
string* p = &s.name;//普通指针
//定义成员变量指针
string Student::*pname = &Student::name;
2)使用
对象.*成员指针名;
s.*pname;//s.name
".*":成员指针解引用运算符
对象指针->*成员指针名;
Student ps = &s;
ps->*panme;//ps->name;
"->*":间接成员指针解引用运算符
注:成员变量指针的本质就是类中特定成员变量在对象中的相对地址。
2 成员函数指针
1)语法
返回类型 (类名::*成员函数指针)(形参表)
= &类名::成员函数名;
2)使用
(对象.*成员函数指针)(实参表)
(对象指针->*成员函数指针)(实参表)
二十 操作符重载
eg:复数
(3+4i) + (1+3i) = (4+7i);
1 双目操作符重载 L#R
1.1 运算类双目操作符:+ - * / ...
1)左右操作数可以是左值也可以是右值
2)表达式的值是一个右值
L#R的表达式会被编译器处理为L.operator#(R)的成员函数调用形式,该函数的返回值就是表达式值;
eg:
c1 + c2 = c1.operator+(c2);
1.2 赋值类的双目操作符: = += -= ...
练习:复习string类实现,单例模式...
阅读全文
0 0
- day06 静态成员、成员指针、操作符重载
- Day41、静态成员变量、静态成员函数、单例模式、成员/成员函数指针、操作符重载、友元函数
- day_07_成员指针、操作符重载
- 成员指针操作符
- C#学习之静态成员和非静态成员,构造函数,方法,方法参数,操作符重载,事件
- 重载操作符时选择成员还是非成员实现
- 重载的操作符成员函数与非成员函数
- 操作符重载++类成员+全局
- c++ 重载的成员访问操作符
- 成员访问(->)操作符的重载
- 面向对象(二)——操作符重载 & 关键字this & 静态成员static
- 指向非静态成员指针和指向静态成员指针
- 静态类成员的指针
- 4.操作符重载:成员还是非成员 和 5.重载、缺省值以及省略符
- [c++基础]运算符重载,共有数据保护,静态成员
- 含有指针成员时的赋值运算符重载
- C# 入门(5) 类和结构,静态,访问器,虚成员和抽象成员,扩展方法,操作符重载,匿名类型
- 继承 重载 封装 多态 静态成员变量
- 让Android应用程序申请获取ROOT权限
- 王学岗Retrofit初探(三)——json的数据
- day05 this指针和常函数、析构函数(Destructor) 、拷贝构造和拷贝赋值
- Spring中bean的作用域与生命周期
- WebSocket+STOMP+SockJS
- day06 静态成员、成员指针、操作符重载
- maven 生产环境、开发环境替换配置文件打包
- day07 操作符重载、类型转换操作符
- Xbox负责人谈为何不支持VR:过度关注VR很危险
- tp5面包屑
- Android Activity
- 沙盒路径(OC)
- day08
- win8/win10 禁用ctrl+alt+方向键