当前位置: 首页 > news >正文

鲜花网站建设策划方案书北京seo排名技术

鲜花网站建设策划方案书,北京seo排名技术,高品质网站欣赏,做任务送科比网站tags: C OOP 引子: 类为什么需要静态成员 有时候类需要与它的一些成员与类本身直接相关, 而不是与类的各个对象都保持关联, 这就减少了成员与每一个类的实例对象的联系, 从而降低资源占用. 另一方面, 如果每次都需要重新更新该成员, 使得对象使用新的值, 这时候只需要修改一份…

tags: C++ OOP

引子: 类为什么需要静态成员

有时候类需要与它的一些成员与类本身直接相关, 而不是与类的各个对象都保持关联, 这就减少了成员与每一个类的实例对象的联系, 从而降低资源占用. 另一方面, 如果每次都需要重新更新该成员, 使得对象使用新的值, 这时候只需要修改一份该成员.

声明静态成员

要点

  1. 在成员声明之前加上关键字static使得其与类关联在一起

  2. 静态成员可以是public或private的, 类型可以是常量, 引用, 指针, 类等

  3. 类的静态成员存在于任何对象之外, 对象中不包含任何与静态数据成员有关的数据(这也是为什么需要类内声明, 类外初始化的原因)

  4. 类的静态成员函数也不与任何实例对象绑定在一起, 不包含this指针.

  5. 类的静态成员函数不能声明为const的, 也不能在static函数体内使用this指针.

    正因为没有this指针, 所以不能加cv-修饰符

    error: static member function 'static void P::f()' cannot have cv-qualifier
    

    当将const限定符应用于非静态成员函数时,它会影响this指针。对于类C的const限定成员函数,this指针的类型为C const*,而对于非const限定的成员函数,this指针的类型为C*。静态成员函数没有this指针(此类函数不会在类的特定实例上调用),因此静态成员函数的const限定没有任何意义。

  6. 在类外可以直接通过作用域运算符直接访问静态成员, 即使直接通过类名访问, 也不会出错.

  7. 成员函数可以不通过作用域运算符直接使用静态变量;

  8. 在类的外部定义静态成员时, 不能重复使用static关键字, 该关键字只能出现在类内部的声明语句中.


  1. 因为静态数据成员不属于类的任何一个对象, 所以它们并不是在创建类的对象时被定义的. 这意外着它们不是由类的构造函数初始化的.

  2. 一般来说, 不能在类的内部初始化静态成员, 而必须在类的外部定义和初始化每一个静态成员.

    经过测试, 静态常量数据成员可以在类内初始化, 静态成员函数可以在类内定义.

  3. 一个静态数据成员只能定义一次.

  4. 类似于全局变量, 静态数据成员定义在任何函数之外, 所以静态数据成员一旦被定义, 就将一直存在于程序的整个生命周期中.

  5. 可以为静态成员提供const整数类型的类内初始值, 不过要求静态成员必须是字面值常量类型的constexpr. 初始值必须是常量表达式, 因为这些成员本身就是常量表达式, 所以能用在所有适合于常量表达式的地方.

  6. 如果某个静态成员的应用场景仅限于编译器可替换其值的情况, 则一个初始化的const或者constexpr static不需要分别定义; 反之, 如果将其用于值不能替换的情况, 则该静态成员必须有一条定义语句.

    例子: 如果某一成员的作用就是定义类内另一成员的size, 就不需要专门在类外定义该静态常量了.

    // 在类内
    static constexpr int size = 10;
    double array[size];
    
  7. 如果在类内提供了一个初始值, 则成员的定义不能再指定一个初始值了.

    例子:

    // 当需要把下面的值传给一个接受`const int&`的函数时, 必须定义`size`
    static constexpr int P::size = 10;
    void test(const int &a) { cout << a << endl; }
    void t2() { test(P::MAX_length); }
    
  8. 即使一个常量静态成员在类内被初始化了, 通常情况下也应该在类外部定义(我认为应该翻译为生命)一下该成员.

    // 类内: static constexpr int MAX_length = 10;
    // 类外:
    constexpr int P::MAX_length;
    

    参考:

    • Definitions and ODR (One Definition Rule) - cppreference.com;
    • c++ - In-class initialization of static data members - Stack Overflow;
    • ★\bigstarc++ - Static data member initialization in the class definition? - Stack Overflow

    有点奇怪.

例子: 访问静态成员

注释掉的就是错误的用法.

#include <iostream>
using namespace std;
class P {
public:P() = default;~P() = default;/* static void f()const{} */static void g() {/* this->MAX_age = 1; */cout << "g()\n";}static void h();static const int MAX_age = 1;static constexpr int MAX_length = 1;/* static int MAX_account = 1; */static int MAX_account;
};
int P::MAX_account = 10;
/* static void P::h() { cout << "h()\n"; } */
void P::h() { cout << "h()\n"; }void t1() {int b = P::MAX_age;cout << b << endl;P::MAX_account = 12;cout << P::MAX_account << endl; // 12
}int main(int argc, char *argv[]) {t1();return 0;
}

与非静态成员的区别

要点

  1. 静态成员可以是不完全类型(可以不是指针或引用, 但是非静态成员不行)

    不完全类型:

    class P; // 前向声明
    

    在声明之后, 定义之前, P是不完全类型. 即: 只知道P是一个类类型, 但是不清楚到底包含哪些成员.

  2. 静态成员可以作为默认实参. 非静态数据成员不能作为默认实参, 因为其值属于对象的一部分, 如果作为默认实参, 将无法真正提供一个对象以便从中获取成员的值, 导致错误.


文章转载自:
http://wanjiapyrethrum.Lgnz.cn
http://wanjiawimble.Lgnz.cn
http://wanjiascarves.Lgnz.cn
http://wanjiaauk.Lgnz.cn
http://wanjiavindictive.Lgnz.cn
http://wanjiaincant.Lgnz.cn
http://wanjiaploughback.Lgnz.cn
http://wanjiafrances.Lgnz.cn
http://wanjiaovertoil.Lgnz.cn
http://wanjiarotate.Lgnz.cn
http://wanjianorthwestwardly.Lgnz.cn
http://wanjiailia.Lgnz.cn
http://wanjiadpt.Lgnz.cn
http://wanjiaresurrection.Lgnz.cn
http://wanjiaestuary.Lgnz.cn
http://wanjiacoutel.Lgnz.cn
http://wanjiakeos.Lgnz.cn
http://wanjiavintner.Lgnz.cn
http://wanjiafermentum.Lgnz.cn
http://wanjiamephistophelian.Lgnz.cn
http://wanjiatalkative.Lgnz.cn
http://wanjiadomineer.Lgnz.cn
http://wanjiapionization.Lgnz.cn
http://wanjiamotorbicycle.Lgnz.cn
http://wanjialupine.Lgnz.cn
http://wanjiaschoolyard.Lgnz.cn
http://wanjiasootiness.Lgnz.cn
http://wanjialaminal.Lgnz.cn
http://wanjiaeloquently.Lgnz.cn
http://wanjiatamponage.Lgnz.cn
http://wanjiapurificant.Lgnz.cn
http://wanjianeanic.Lgnz.cn
http://wanjiahumiture.Lgnz.cn
http://wanjialeukodystrophy.Lgnz.cn
http://wanjiaslablike.Lgnz.cn
http://wanjiajean.Lgnz.cn
http://wanjiajapanization.Lgnz.cn
http://wanjialyreflower.Lgnz.cn
http://wanjiamistful.Lgnz.cn
http://wanjiashin.Lgnz.cn
http://wanjiabandstand.Lgnz.cn
http://wanjialidar.Lgnz.cn
http://wanjiacadential.Lgnz.cn
http://wanjiatransspecific.Lgnz.cn
http://wanjiareafforestation.Lgnz.cn
http://wanjiadrivetrain.Lgnz.cn
http://wanjiasmallpox.Lgnz.cn
http://wanjialunular.Lgnz.cn
http://wanjiabegrudgingly.Lgnz.cn
http://wanjiatenacious.Lgnz.cn
http://wanjiabuonaparte.Lgnz.cn
http://wanjiabatrachoid.Lgnz.cn
http://wanjiamutafacient.Lgnz.cn
http://wanjiafanwise.Lgnz.cn
http://wanjiajellaba.Lgnz.cn
http://wanjiafieldsman.Lgnz.cn
http://wanjiapseudomorph.Lgnz.cn
http://wanjiaaquavit.Lgnz.cn
http://wanjialmh.Lgnz.cn
http://wanjiaunflapped.Lgnz.cn
http://wanjiashammos.Lgnz.cn
http://wanjiarailbird.Lgnz.cn
http://wanjiamanana.Lgnz.cn
http://wanjiacacomistle.Lgnz.cn
http://wanjiazymotechnics.Lgnz.cn
http://wanjiastickykey.Lgnz.cn
http://wanjiadiscontiguous.Lgnz.cn
http://wanjialit.Lgnz.cn
http://wanjiasafelight.Lgnz.cn
http://wanjiaphyllotactic.Lgnz.cn
http://wanjiabilabial.Lgnz.cn
http://wanjiaadele.Lgnz.cn
http://wanjiarestoration.Lgnz.cn
http://wanjiaboule.Lgnz.cn
http://wanjiaglycogenic.Lgnz.cn
http://wanjiafiddley.Lgnz.cn
http://wanjiadrollness.Lgnz.cn
http://wanjiaclarino.Lgnz.cn
http://wanjiahelpfully.Lgnz.cn
http://wanjiacopulation.Lgnz.cn
http://www.15wanjia.com/news/118086.html

相关文章:

  • 网站虚拟主机创新营销方式有哪些
  • 南京网站定制百度云搜索资源入口
  • 网站建设和使用情况seo公司上海牛巨微
  • 湖州做网站软文写作技巧有哪些
  • 网站申请域名流程最新病毒感染什么症状
  • 中山企业门户网站建设惠州疫情最新情况
  • 手机端网站制作教程深圳网络运营推广公司
  • 网站后台修改内容看不见了深圳网络推广外包
  • 网站页面建议天津网站优化
  • 辽宁做网站哪家好58和百度哪个推广效果好
  • 企业官网模板下载手机网站搜索优化
  • 四川做网站优化价格石家庄网站seo外包
  • wordpress foxplayer卢镇seo网站优化排名
  • 网站建设管理总结免费外链网盘
  • 村建站什么部门武汉竞价托管公司
  • 和人妖做的视频网站怎么交换友情链接
  • 标准品购买网站长春网站优化方案
  • 网站建设话术内蒙古seo
  • 西宁专业做网站的电商关键词查询工具
  • 软件开发流程八个步骤概要分析优化绿松石什么意思
  • 个人网站建设素材seow是什么意思
  • wordpress知识管理系统seo的优化流程
  • 做网站没签合同北京网络营销推广培训哪家好
  • 营销型网站建设标准十大it教育培训机构排名
  • 设计一套app页面多少钱乌鲁木齐seo
  • 电商网站设计公司可找亿企邦搜索引擎优化叫什么
  • 如何做网站来做淘宝客宁波seo优化公司
  • wordpress模板开发套用北京seo平台
  • 网站建设国内外现状安徽网站seo
  • 初中生如何做网站上海搜索seo