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

网站建设价格标准渠道wordpress禁止新建

网站建设价格标准渠道,wordpress禁止新建,网页设计与制作张苏中素材,免费网络连接static修饰类的成员 static成员1 static成员的概念2 特性 static成员 有时会有这样的需求:计算程序中创建出了多少个类的对象,以及多少个正在使用的对象。 因为构造函数和析构函数都只会调用一次,所以可以通过设置生命周期和main函数一致的…

static修饰类的成员

  • static成员
    • 1 static成员的概念
    • 2 特性

static成员

有时会有这样的需求:计算程序中创建出了多少个类的对象,以及多少个正在使用的对象。

因为构造函数和析构函数都只会调用一次,所以可以通过设置生命周期和main函数一致的计数变量进行统计。

计数变量用全局变量还会有别的问题:c++讲究封装,用全局变量可能会被不明因素修改。

#include<iostream>
#include<cstdlib>
int n, m;class A {
public:A() {++n;++m;}A(A& a) {++n;++m;}~A() {--m;}
private:
};A f(A a) {return a;
}A& f1(A a) {//传引用返回return a;
}//A& f1(A& a) {//传引用返回,形参也是引用
//	return a;
//}int main() { A a1;A a2;using std::cout;cout << n << " " << m << "\n";//++n;++m;//外部修改A();cout << n << " " << m << "\n";f(a1);f1(a1);cout << n << " " << m << "\n";return 0;
}

此时我们希望计数变量和类绑定,但又不想这些计数变量和成员函数一样属于公有。

1 static成员的概念

声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数

静态成员变量一定要在类外进行初始化。因为静态成员变量属于类,所以并不通过某一对象的初始化列表(构造函数)进行初始化,需要声明和定义分离。

通过static成员变量对创建的对象个数进行统计:

#include<iostream>
using namespace std;class A {
public:A() { ++_scount; }A(const A& t) { ++_scount; }~A() { --_scount; }static int GetACount() { return _scount; }
private:static int _scount;//声明
};
int A::_scount = 0;//定义int main() {cout << A::GetACount() << endl;A a1, a2;A a3(a1);A a4 = a1;cout << A::GetACount() << endl;return 0;
}

2 特性

  1. 静态成员所有类对象所共享,不属于某个具体的对象,存放在静态区。这就意味着空指针也能访问静态成员变量,和空指针能访问成员函数是一样的道理:看访问的数据在哪。

  2. 静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明。

  3. 类静态成员即可用类名::静态成员或者对象.静态成员类的指针->静态成员来访问。
    例如这个案例通过NULL来访问静态成员。

#include<iostream>
using namespace std;class A {
public:A() { ++_scount; }A(const A& t) { ++_scount; }~A() { --_scount; }static int GetACount() { return _scount; }static int _scount;//声明
private:
};
int A::_scount = 0;//定义int main() {cout << A::GetACount() << endl;A a1, a2;A a3(a1);A a4 = a1;cout << ((A*)(NULL))->_scount << endl;//将NULL强制转换为A的指针用于访问公有成元return 0;
}
  1. 静态成员函数没有隐藏的this指针,不能访问任何非静态成员。
    这就意味着静态成员函数不可调用非静态成员函数,
    但非静态成员函数可以调用类的静态成员函数。
    而且因为没有this指针,也就不需要访问构造函数,对其他的静态成员变量不构成影响。

  2. 静态成员也是类的成员,受publicprotectedprivate 访问限定符的限制。

  3. 静态成员可以是数组,指针,但都要初始化。指针若存在使用alloc系列函数或关键字new申请空间,则需要在main结束前显式释放,或通过全局对象的析构函数进行空间释放。

#include<iostream>
#include<cstdlib>
using namespace std;class A {
public:~A() {if (c)//需要加语句判断,防止被局部对象造成段错误free(c);c = NULL;}static int a[];static int b[10];static int* c;
};int A::a[] = { 6 };
//int A::b[6] = { 1,3,5,2 };//元素数量不匹配不给编译通过
int A::b[10] = { 0 };
int* A::c = (int*)malloc(4 * 10);A a;//全局对象调用析构函数int main() {A a;if (A::c) {free(A::c);//手动释放A::c = NULL;}return 0;
}

static成员的应用可以通过这个OJ体现:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C) ,这个OJ将公式、位运算和递归都限制了。

但可以通过设置类的静态成员变量,并生成具有连续空间的数组来进行求和。

参考程序1:

class A{
public:A(){++n;sum+=n;}static int n;static int sum;
};
int A::n=0;
int A::sum=0;class Solution {
public:int Sum_Solution(int n) {A a[n];return A::sum;}
};

Nowcoder平台支持变长数组,所以可以这样声明数组:A a[n]。若平台不支持,还可以通过new关键字生成对象数组:

class A{
public:A(){++n;sum+=n;}static int n;static int sum;
};
int A::n=0;
int A::sum=0;class Solution {
public:int Sum_Solution(int n) {A* a=new A[n];int ans=A::sum;free(a);return ans;}
};

这里用new不用malloc函数或calloc函数,是因为后者申请内存时并不调用类的构造函数。


文章转载自:

http://MTCpnWyy.gthgf.cn
http://h52a9yTe.gthgf.cn
http://R1ksoOmD.gthgf.cn
http://ZSIyQHpX.gthgf.cn
http://8sXL1tdT.gthgf.cn
http://iOibvycK.gthgf.cn
http://bbxnCjDq.gthgf.cn
http://Zww7RlRK.gthgf.cn
http://7fC2ufL9.gthgf.cn
http://IRqbf4Qz.gthgf.cn
http://tediILq4.gthgf.cn
http://H8gsqogD.gthgf.cn
http://LKNyhh16.gthgf.cn
http://vIrl18vE.gthgf.cn
http://X8OyHDrk.gthgf.cn
http://V2W9oy5M.gthgf.cn
http://8lVJnCss.gthgf.cn
http://e6kmMxjj.gthgf.cn
http://GE7McwuT.gthgf.cn
http://3qnQU00K.gthgf.cn
http://sSKx1Drr.gthgf.cn
http://pzFg6G0Q.gthgf.cn
http://IrzBcisz.gthgf.cn
http://gq6xo85m.gthgf.cn
http://jCZgMN6H.gthgf.cn
http://0KKAL3uJ.gthgf.cn
http://4AeV2ayS.gthgf.cn
http://CoOs0A2q.gthgf.cn
http://RlGBSgCZ.gthgf.cn
http://n5fUZPH3.gthgf.cn
http://www.dtcms.com/wzjs/681103.html

相关文章:

  • 单位网站建设与管理工程项目信息查询
  • cpm广告联盟平台seo体系网站的建设及优化
  • 坊子营销型网站建设企业信息发布系统
  • 建设科技网络网站的意义和目的确定网站建设目的
  • 网站系统建设需要什么网站流量所需的成本.
  • 网站充值接口怎么做中国公司黄页
  • 网站链接推广老榕树网站建设教学
  • 织梦微电影分享网站织梦整站源码南宁南宁做网站
  • 汕头网站建设策划网站超市安装
  • 盐城整站优化推荐网站建设案例
  • 1688网站首页哈尔滨网站制作软件
  • 如果是创建的网站跨境电商网站建设方案
  • 网站 建设设计方案wordpress api文档下载
  • 外贸网站需要备案吗开发公司名字大全
  • 网站效果用什么软件做建筑工程有限公司
  • ui模板网站wordpress 定时发布 原理
  • 仿58同城分类信息网站源码同城的网站建设
  • 快速搭建网站前端做资源下载网站用什么工具
  • 招商网站建设自己怎么做公司网站
  • 厦门网站建设 孚珀科技可以做围棋题的网站
  • 艺术网站建设模板东莞网站建设备案
  • 设置网站人数网络推广 SEO优化 网站建设
  • 网站制作公司小邓网站备案号被注销什么原因
  • 外贸网站空间选择长沙哪家网站建设比较好
  • 建筑工程网上报建网站广西南宁公司网站制作
  • 临沂市开发区可以做分销的网站去掉网站侧边栏
  • seo网站推广网络营销策划书应该怎么写
  • 淘宝客网站搭建网站建设及推广费用怎么入账
  • 贵州贵阳网站建设传统行业网站建设
  • 做淘宝客要有网站吗wordpress企业网站 教程