c++ 05
一、单例模式
二、成员指针
class Student {
public:
string m_name;
void print (void) { ... }
};
1.指向成员变量的指针
成员变量类型 类名::*指针变量名;
string Student::*pname;
pname是一个指向Student类中string类型成员变量的指针。
指针变量名 = &类名::成员变量名;
pname = &Student::m_name;
对象.*指针变量名/对象指针->*指针变量名
.* - 成员指针解引用运算符
->* - 成员指针间接访问运算符
Student s (...), *p = &s;
cout << s.*pname << endl;
cout << p->*pname << endl;
2.指向成员函数的指针
成员函数返回类型 (类名::*指针变量名) (形参表);
void (Stduent::*pprint) (void);
指针变量名 = &类名::成员函数名;
pprint = &Student::print;
(对象.*指针变量名) (实参表)/
(对象指针->*指针变量名) (实参表)/
Student s (...), *p = &s;
(s.*pprint) ();
(p->*pprint) ();
三、操作符重载的基本概念
c1-(c2+c3)
c1.sub (c2.add (c3));
1.操作符和操作符函数
1)双目操作符:+-*/%...,+=/-=...,<</>>
L#R -> L.operator#(R),左调右参
-> ::operator#(L,R),左一右二
2)单目操作符:-/~/!...,++/--
#O/O# -> O.operator#()
-> ::operator#(O)
3)三目操作符:?:,不能表示为操作符函数
2.所谓操作符重载,其本质就是根据不同的数据类型,定义相应的操作符函数,以使自定义类型能够与基本类型应用相同或相近的语义进行运算。
3.能够被重载的操作符的操作数种至少有一个是类类型。
4.操作符的优先级和结合序不会因重载而发生变化。
5.操作符的操作数个数不会因重载而发生变化。
6.除了“()”操作符以外所有的操作符函数都不能带有缺省参数。
7.并不是所有的操作符都能重载。
8.不能发明新的操作符。
x ** y
四、双目操作符
1)+-*/
2)复合赋值:+=/-=
3)输入输出:>>/<<
cout << c1 -> cout.operator<< (c1)
ostream -> ::operator<< (cout, c1)
cin >> c1
istream
cout << a << endl;
~~~~~~~~~
cout
五、单目操作符
1)-/~/!
2)前缀自增减
++i
3)后缀自增减
i++
练习:实现一个3X3的矩阵类M33,支持如下运算:+/*/+=/*=/取负/前++/后--/<<
1 2 3 9 8 7 30
4 5 6 X 6 5 4 =
7 8 9 3 2 1
9+12+9
c++ 05的更多相关文章
- Java学习笔记(05)
目录: static的用法 主函数的定义 增强for的循环 单例设计模式 封装 一.Static的用法 1.对象的内存分析 对象的引用变量是存在于栈区,而在堆区开辟了一块内存空间,调用对象给成员变量赋 ...
- iOS系列 基础篇 05 视图鼻祖 - UIView
iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...
- 【web开发 | 移动APP开发】 Web 移动开发指南(2017.01.05更新)
版本记录 - 版本1.0 创建文章(2016.12.30) - 版本1.1 更正了hybird相关知识:增加了参考文章(2017.01.05): + Web APP更正为响应式移动站点与页面,简称响应 ...
- javaSE基础05
javaSE基础05:面向对象 一.数组 数组的内存管理 : 一块连续的空间来存储元素. Int [ ] arr = new int[ ]; 创建一个int类型的数组,arr只是一个变量,只是数组的一 ...
- 异步编程系列第05章 Await究竟做了什么?
p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...
- javascript基础05
javascript基础05 1.变量的作用域 变量既可以是全局,也可以是局部的. 全局变量:可以在脚本中的任何位置被引用,一旦你在某个脚本里声明了全局变量,你就可以 在这个脚本的任何位置(包括函数内 ...
- Linux 第05天
Linux 第05天 1.连接到Internet 1.1 配置网络信息 dmesg命令————查看网卡信息 dmesg | grep -i net ifconfig命令————查看IP.网关等相关信息 ...
- 05:统计单词数【NOIP2011复赛普及组第二题】
05:统计单词数 总时间限制: 1000ms 内存限制: 65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...
- sublime text 3 license 2016.05
补充:2016.05 最近经过测试,3个注册码在新版3103的sublime上已经不可用了. 现补充两枚新版的license key: -– BEGIN LICENSE -– Michael Barn ...
- 驱动开发学习笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇
驱动开发读书笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇 下面这段摘自 linux源码里面的文档 : 内核版本2.6.22Doc ...
随机推荐
- 2015第24周二Spring事务2
今天继续深入学习SPring事务,发现网上很多文章都是很相似的转载没多少价值,就觉得更有必要把这个主题深入下去,先是摘录那些对自己有用的观点,后期再结合源码进行全面的整理. Spring提供了许多内置 ...
- PHP常见报错解析
{错误类型}: {错误原因} in {错误文件} on {错误行数} 说明了在哪个文件的哪一行中因何种原因出现了何种错误. 常见的错误类型一般有下面几种: Parse error(解析错误)一般都伴随 ...
- c++ 之 字符和字符串
字符 1.字符的分类 字符主要包括字母.数字.标点符号.控制字符等 在ASCII编码表中,每一个字符都用一个十进制数来表示 注:ASCII的全称是American Standard Code for ...
- (转载)iOS Framework: Introducing MKNetworkKit
This article is available in Serbo-Croatian, Japanese and German. (Translations in Serbo-Croatian b ...
- 退役笔记一#MySQL = lambda sql : sql + ' Source Code 4 Explain Plan '
Mysql 查询运行过程 大致分为4个阶段吧: 语法分析(sql_parse.cc<词法分析, 语法分析, 语义检查 >) >>sql_resolver.cc # JOIN.p ...
- 一个不错的PPT,扁平化设计,开放资源,要的进来
开了那么多的博客,没做啥资源贡献,今天共享一个不错的PPT模板.例如以下图所看到的,须要的话留下邮箱 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGFp ...
- Java第四周学习日记(绪)
1.静态导入 作用:简化书写静态导入可以作用一个类的所有静态成员静态导入格式:import static 包名.类名静态导入要注意的事项:如果静态导入的成员与本类的成员存在同名的情况下,那么默认使用本 ...
- VB6.0连接MySQL数据库
VB6.0连接MySQL数据库
- vsftp虚拟用户登录配置详解
一.安装:1.安装Vsftpd服务:# yum install vsftpd 2.安装DB4部件包:这里要特别安装一个db4的包,用来支持文件数据库.# yum install db4-utils 二 ...
- 通过JS控制textarea的输入长度
废话不多说,直接上代码(因为自己也只是遇到的时候然后上网查到的解决办法,放在此处只是为了方便各位看以及以后再碰到用起来方便) <ul> <li> <textarea ro ...