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

个人外贸网站制作青岛黄岛区建设工程管理局网站

个人外贸网站制作,青岛黄岛区建设工程管理局网站,网站速度的重要性,做门户网站要多少钱目录 1.练习题:带解法限制求123...n 题目 分析 Myclass设计 在Sum_Solution()在需要调用n次构造函数 方法1:变长数组 方法2:new对象 完整代码 提交结果 2.静态成员函数和非静态成员函数的互相调用问题 静态成员函数可以调用非静态成员函数吗? 非静态成员函数可以调…

目录

1.练习题:带解法限制求1+2+3+...+n

题目

分析

Myclass设计

在Sum_Solution()在需要调用n次构造函数

方法1:变长数组

方法2:new对象

完整代码

提交结果

2.静态成员函数和非静态成员函数的互相调用问题

静态成员函数可以调用非静态成员函数吗?

非静态成员函数可以调用类的静态成员函数吗?

3.static函数的优势

当构造函数在类的private中类外调不了时,可以使用静态函数调用


1.练习题:带解法限制求1+2+3+...+n

题目

JZ64 求1+2+3+...+n

分析

读题发现题目对解法的限制比较严格:不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)

如果使用递归,则需要使用if来判断返回条件;如果使用位运算,返回的结果n*(n+1)>>1会用到乘号,也不行

本题可以使用CD25.【C++ Dev】类和对象(16) static成员(上)文章提到的静态成员变量来解决,让构造函数和静态成员变量打配合可以完美解决

Myclass设计

尝试初始化n个对象,显然会调用n次构造函数,以此来进行n次加法

 设计框架:

class Myclass
{
public:Myclass(){//操作}
private://填写成员变量
};

n次加法应该遵循此顺序:+1、+2、+3、...、+n

需要用两个静态变量,一个存储累加的和(_ret),一个来控制每次相加的数字(_i)

则_ret初始化为0,_i初始化为1,执行一次构造函数时,_ret+=_i并且_i++

由于Myclass定义在Solution外,如果Sum_Solution()函数要取得_ret的值,在Myclass类中需要定义一个GetRet()函数来取得

class Myclass
{
public:Myclass(){_ret+=_i;_i++;}static int GetRet()//参数无this指针,可以使用Myclass::GetRet()来调用{return _ret;}
private:static int _i;static int _ret;
};
int Myclass:: _i=1;
int Myclass::_ret=0;

在Sum_Solution()在需要调用n次构造函数

如果使用while则会违背题意

int Sum_Solution(int n) 
{while(n--)//虽然可以通过,但是题目限定不能用while{Myclass obj; }     return Myclass::GetRet();
}
方法1:变长数组
int Sum_Solution(int n) 
{Myclass obj[n];return Myclass::GetRet();
}
方法2:new对象
int Sum_Solution(int n) 
{new Myclass[n];//b不用接收返回值return Myclass::GetRet();
}

完整代码

class Myclass
{
public:Myclass(){_ret+=_i;_i++;}static int GetRet(){return _ret;}
private:static int _i;static int _ret;
};
int Myclass:: _i=1;
int Myclass::_ret=0;class Solution 
{
public:int Sum_Solution(int n) {Myclass obj[n]; //或者使用new对象       return Myclass::GetRet();}
};

提交结果

2.静态成员函数和非静态成员函数的互相调用问题

静态成员函数可以调用非静态成员函数吗?

答:之前在CD25.【C++ Dev】类和对象(16) static成员(上)文章中的特点6提到过:原本的静态成员函数的参数是没有隐藏this指针的,而调用非静态成员函数需要传this指针,因此不可以调用

如果要强行调用非静态成员函数其实也是可以的,不过要手动传指针,通过ptr->nonstaticfunction()来调用

#include <iostream>
using namespace std;
class Myclass
{
public:static void staticfunction(Myclass* ptr){ptr->nonstaticfunction();}void nonstaticfunction(){cout << "void nonstaticfunction()" << endl;}
};int main()
{Myclass obj;obj.staticfunction(&obj); return 0;
}

运行结果:

非静态成员函数可以调用类的静态成员函数吗?

答:和第一问反过来,可以调用,例如以下代码:

#include <iostream>
using namespace std;
class Myclass2
{
public:static void staticfunction(){cout << "static void staticfunction()" << endl;}
};class Myclass1
{
public:void nonstaticfunction(){Myclass2::staticfunction();}
};int main()
{Myclass1 obj1;obj1.nonstaticfunction();return 0;
}

运行结果:

3.static函数的优势

当构造函数在类的private中类外调不了时,可以使用静态函数调用

例如在栈上创建对象:

#include <iostream>
using namespace std;
class Myclass
{
public:static Myclass Getobj(){Myclass obj;return obj;}
private:Myclass(){cout << "Myclass()" << endl;}
};int main()
{Myclass ret = Myclass::Getobj();return 0;
}

注意:不能使用非静态成员函数! 非静态成员函数需要隐式传this指针,而有this指针的前提:this指针指向已经创建好的对象

运行结果:

例如在堆上创建对象:

#include <iostream>
using namespace std;
class Myclass
{
public:static Myclass* Getobj(){return new Myclass;}
private:Myclass(){cout << "Myclass()" << endl;}
};int main()
{Myclass* ret = Myclass::Getobj();return 0;
}

*注:new会自动调用构造函数,这个特点后面文章再说,这里略过

运行结果:


文章转载自:

http://XVRIdcMM.sxcwc.cn
http://RFnlALwC.sxcwc.cn
http://7nNvSkIH.sxcwc.cn
http://WO8DKbFL.sxcwc.cn
http://bvDo1req.sxcwc.cn
http://KOcI5gDf.sxcwc.cn
http://eWCLdkFo.sxcwc.cn
http://Iv2C6sp4.sxcwc.cn
http://p0K1Q4ck.sxcwc.cn
http://E84IMyuw.sxcwc.cn
http://eM8EPF8N.sxcwc.cn
http://68vgfnq1.sxcwc.cn
http://nEKPZg28.sxcwc.cn
http://nI9geox0.sxcwc.cn
http://MBfP0O4Z.sxcwc.cn
http://7egUhjX8.sxcwc.cn
http://6Dr2FM0Z.sxcwc.cn
http://Kc3bSaOm.sxcwc.cn
http://sW2uDEZu.sxcwc.cn
http://R8HGJm2f.sxcwc.cn
http://tX9vGSqG.sxcwc.cn
http://pqPgfu3F.sxcwc.cn
http://NgOuqFL8.sxcwc.cn
http://lQ2hEXF8.sxcwc.cn
http://ld8xCtSj.sxcwc.cn
http://KXXj88P0.sxcwc.cn
http://v1ZVsYf1.sxcwc.cn
http://nei9TpMm.sxcwc.cn
http://pns0c4Fw.sxcwc.cn
http://9mIT3lRF.sxcwc.cn
http://www.dtcms.com/wzjs/759005.html

相关文章:

  • 糕点网站策划书网站模板下载模板下载
  • wordpress黑糖主题seo优化技术教程
  • 免费ppt模板下载免费版简约湛江做网站seo的
  • 呼伦贝尔网站建设呼伦贝尔阜宁网站制作哪家好
  • 温州好的网站推广个人如何接外包项目
  • 怎么查网站的浏览量商城app开发费用多少钱
  • 存储网站建设建立以()为特点
  • 在线企业建站服务wordpress多人博客
  • 试述网站建设的步骤过程织梦网站维护
  • 黑网站代码制作网站建设制作教程
  • 网站追踪如何做WordPress推送帖子到QQ群
  • ps做全屏网站画布要多大做字幕模板下载网站
  • 网站建设质量保证seo技术员招聘
  • 做游戏交易网站有哪些张槎建网站服务
  • 网站建设广告图片绵阳 网站 建设
  • 好的网站具备linux 网站301
  • 电子商务网站详细设计优秀个人博客网站
  • 浙江平台网站建设制作微网站模板源代码
  • 做的网站怎么放到域名网站模版 免费下载
  • 泉州做网站联系方式设计公司和装修公司的区别
  • 医疗类网站建设wordpress百度主动插件
  • 阿里云网站域名证书杭州建设局网站官网
  • 做查询网站有哪些百度关键词分析工具
  • 一站式网站建设报价灌云网站设计
  • 市妇联门户网站平台建设情况博客一号wordpress主题
  • 哪里做网站做得好国内网站空间 优帮云
  • 湖北做网站平台哪家好正在跳转第三方页面
  • 网站开发有什么注意的犀牛云建设网站
  • 江苏住房城乡建设部网站wordpress更改主题
  • 合肥网站建设设计公司哪家好淘宝内部卷怎么做网站