C++ 面向对象高级开发 (七)----- static 关键字
static 关键字 的用法 以及特性
拿之前写过的 复数类 举例:
首先 我们来看没有 static 的 data 对象以及 function 对象
non-static data members:
在使用complex对象的时候,要调用其中的real函数:
实际上会利用 this point 去在函数real中调用 要使用的数据的地址&C1
而non-static 数据 在储存中是每一个成员数据分开储存的 调用的时候就需要用到 this调用
对应的non-static 成员函数 则也需要使用this调用 每一个需要使用的数据的地址
static data members:
它就是 在complex类 中 不需要 每个成员都创建储存的那一类 数据,例如银行固定不变的利率
static 只有一份
对应的 static 成员函数 就是为了处理 static数据 所以 static 成员函数没有 this point
static 用法实例:
Singleton (单例类)设计模式:
第一种:
在private 里面创建 构造函数(ctors) 意味着 ’整个世界‘ 只存在 一个A类一个a对象
并且你只能通过 调用public 中的static 成员函数 getInstance() 来得到 a 这个对象 并使用 这个A类的其他成员函数
第二种:(更加推荐,更好)
第一种 singleton 设计模式实现 的缺点是 如果没有任何人要使用这个A类的话 因为 ' static A a ' A类仍然创建了A对象,并进行储存。占用了内存。但并未得到使用,会产生不必要的浪费。
所以有第二种 singleton 的设计模式实现
仍然把构造函数(ctors)放在 private 里 但是,静态对象 a 的创建 却被放在了 public static 成员函数中,这种做法使得,如果没有人使用到这个 单例类 那么,这个类的对象就不会被创建,当且仅当该类被使用时(调用 getInstance() 函数时),该类才会于此同时 创建静态对象 a 。
避免了内存浪费 。
cout 在库函数中怎么写的:
类模板:
函数模板:
使用时不用指定 类型,编译器会自动 参数推导
本文来自博客园,作者:slowlydance2me,转载请注明原文链接:https://www.cnblogs.com/slowlydance2me/p/16852534.html