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

返利网站怎么做wordpress首页怎么改

返利网站怎么做,wordpress首页怎么改,青海省网络公司,成都网站开发 优帮云const 和 volatile 的使用范围几乎没有限制 实例成员函数的参数后面可以出现 const 或 volatile,它们都用于修饰函数隐含参数 this 指向的对象 实例函数对象的参数表后面出现 const 说明this 所指向的对象是不能修改的只读对象 但是可以修改this所指向对象的非只读类…

constvolatile 的使用范围几乎没有限制
实例成员函数的参数后面可以出现 constvolatile,它们都用于修饰函数隐含参数 this 指向的对象
实例函数对象的参数表后面出现 const 说明this 所指向的对象是不能修改的只读对象
但是可以修改this所指向对象的非只读类型的静态数据成员
实例函数成员参数表后出现constvolatileconst volatile ,如果这些实例函数对象隐含参数this的修饰词不同,则可视为重载函数
调用实例函数成员,编译器会将实参的类型同this的类型匹配,从而调用最适合的实例函数成员
可读/写的普通变量或者对象应该调用参数表后不带 const 或者 volatile的实例函数成员
const对象则应该调用参数表后 带 const 的实例函数成员
volatile对象应该调用参数表后带 volatile 的实例成员函数
注意,如果调用的时候不存在对应的实例函数成员,会报错


我们来看一个例子,这个例子都是匹配的调用对应的函数

#include<iostream>
using namespace std;
class A {int a;const int b;
public:int f() {cout << "f() " << endl;a++;//b++;  不可修改return a;}int f()volatile {cout << "volatile f()" << endl;a++;   // 可以修改本类实例成员数据成员 volatile int a//b++;return a;}int f() const volatile {cout << "f() const volatile " << endl;// a++; 也是错误的return a;}int f()const  {cout << "f() const " << endl;// a++ ;也是错误的return a;}A(int x) :b(x) {a = x;}
};
A w(3);  // 这是一个可写对象
const A x(6);  // 这是一个可读对象
volatile A y(6);  // 定义易变对象
const volatile A z(8); // 定义可读易变对象
int main() {w.f();x.f();y.f();z.f();
}

最后的结果如下:
在这里插入图片描述

我们来分析一下上面的四个函数成员 f(), 这四个函数成员为重载函数,它们的显示参数表没有定义任何形参,但是隐含形参this的类型各不相同,this用于指向当前函数得对象。


我们来深入思考一下,如果没有最完美得匹配,编译器会退而求其次调用次匹配的函数吗?
看下面的代码,我把 fun() const 和 fun() volatile 都注释,看看情况会怎么改变

#include<iostream>
using namespace std;
class A {int a;const int b;
public:int f() {cout << "f() " << endl;a++;//b++;  不可修改return a;}//int f()volatile {//	cout << "volatile f()" << endl;//	a++;   // 可以修改本类实例成员数据成员 volatile int a//	//b++;//	return a;//}int f() const volatile {cout << "f() const volatile " << endl;// a++; 也是错误的return a;}//int f()const  {//	cout << "f() const " << endl;//	// a++ ;也是错误的//	return a;//}A(int x) :b(x) {a = x;}
};
A w(3);  // 这是一个可写对象
const A x(6);  // 这是一个可读对象
volatile A y(6);  // 定义易变对象
const volatile A z(8); // 定义可读易变对象
int main() {w.f();x.f();y.f();z.f();
}

运行结果如下
在这里插入图片描述
我们看的出来,const A x(6)volatile A y(6) 由于找不到最合适的匹配函数,都调用了 f() const volatile


我们再来看一个代码,只注释掉 f() const volatile 函数 ,看看如何

#include<iostream>
using namespace std;
class A {int a;const int b;
public:int f() {cout << "f() " << endl;a++;//b++;  不可修改return a;}int f()volatile {cout << "volatile f()" << endl;a++;   // 可以修改本类实例成员数据成员 volatile int a//b++;return a;}//int f() const volatile {//	cout << "f() const volatile " << endl;//	// a++; 也是错误的//	return a;//}int f()const  {cout << "f() const " << endl;// a++ ;也是错误的return a;}A(int x) :b(x) {a = x;}
};
A w(3);  // 这是一个可写对象
const A x(6);  // 这是一个可读对象
volatile A y(6);  // 定义易变对象
const volatile A z(8); // 定义可读易变对象
int main() {w.f();x.f();y.f();z.f();
}

发现
在这里插入图片描述
报错原因
在这里插入图片描述


我们在刚刚的基础上再把 f() const 注释调用

#include<iostream>
using namespace std;
class A {int a;const int b;
public:int f() {cout << "f() " << endl;a++;//b++;  不可修改return a;}int f()volatile {cout << "volatile f()" << endl;a++;   // 可以修改本类实例成员数据成员 volatile int a//b++;return a;}//int f() const volatile {//	cout << "f() const volatile " << endl;//	// a++; 也是错误的//	return a;//}//int f()const  {//	cout << "f() const " << endl;//	// a++ ;也是错误的//	return a;//}A(int x) :b(x) {a = x;}
};
A w(3);  // 这是一个可写对象
const A x(6);  // 这是一个可读对象
volatile A y(6);  // 定义易变对象
const volatile A z(8); // 定义可读易变对象
int main() {w.f();x.f();y.f();z.f();
}

我们来看看报错如何
在这里插入图片描述
在这里插入图片描述


我们最后进行一个实验,只把 f() 函数注释掉,看看会发生什么

#include<iostream>
using namespace std;
class A {int a;const int b;
public://int f() {//	cout << "f() " << endl;//	a++;//	//b++;  不可修改//	return a;//}int f()volatile {cout << "volatile f()" << endl;a++;   // 可以修改本类实例成员数据成员 volatile int a//b++;return a;}int f() const volatile {cout << "f() const volatile " << endl;// a++; 也是错误的return a;}int f()const  {cout << "f() const " << endl;// a++ ;也是错误的return a;}A(int x) :b(x) {a = x;}
};
A w(3);  // 这是一个可写对象
const A x(6);  // 这是一个可读对象
volatile A y(6);  // 定义易变对象
const volatile A z(8); // 定义可读易变对象
int main() {w.f();x.f();y.f();z.f();
}

发现报错如下
在这里插入图片描述


总结一下,总的一个优先级如下:
啥都没有 > constvolatile > const volatile
我来解释一下,如果一个对象不含 const 以及 volatile ,那么会优先调用不含constvolatile 的函数,如果没有,就去调用 f() const 或者 f() volatile 之一,这里如果两个都存在,编译器不知道调用哪一个,就会报错,如果 f() const 或者 f() volatile 都不存在,才调用f() const volatile
如果对象是 const 类型的也是同样的道理,先去找f() const ,找不到才调用 f() const volatile

且补充一个小点,constvolatile 不能出现在构造函数或析构函数的参数表后,因为构造或者析构一个实例对象的时候,对象必须是可以修改的,且必须处于稳定状态(volatile 说明是易变对象)

http://www.yayakq.cn/news/364878/

相关文章:

  • 当前主流网站开发技术确定网站设计公司简报
  • 无锡网站推广电话网站建设仿站
  • 网站刷链接怎么做安平谁做网站好
  • 给网站做认证个人网站建设的流程
  • 手机微网站开发教程烟台cms建站模板
  • 剖析材料范文哪个网站做的好视频号认证需要多少钱
  • 国外的服务器网站怎么去找做网站的
  • 网站格式有哪些山东省建设职业教育集团网站
  • ppt制作软件模板网站网站建设管理案例实训报告
  • 浙江省建设质量工程协会网站网站代做多长时间
  • 使用div建设的网站wordpress前端验证
  • 西安住房建设局网站青岛新公司网站建设推广
  • 怎么可以找到做公益的网站中山网站建设价位
  • 很看好未来做生鲜的网站看网站用什么软件
  • 广西住房和城乡建设厅官方网站营销型网站的网址
  • 如何给网站做地图山东省建设厅定额网站
  • 什么网站源码做分类信息网站好seo网站推广与优化方案
  • 网站模块建设方案电商网站wordpress
  • 门户网站时代网站优化内链怎么做
  • 青海政企网站建设自己开发一款游戏怎么做
  • 外贸seo站陕西省建设厅证网站号多少
  • 网站虚拟主持人怎么搭建wordpress
  • 广州达美网站建设网站地图 用户体验
  • 找公司做网站注意什么做网站去哪里
  • 网站的优势与不足安徽移动互联网开发
  • 网站推广攻略来个网站吧好人一生平安2021
  • 外贸数据分析网站外贸自建站源码
  • 做网站 博客如何查询网站空间大小
  • 芙蓉区乡建设局网站有关建设旅游网站的公司
  • 郑州网站分析免费建博客网站