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

怎么才可以做网站关键词优化seo费用

怎么才可以做网站,关键词优化seo费用,有关做能源的网站,石家庄建设厅网站一、前言 在之前我们已经讨论过了有关类和对象的前置知识以及类中的六大默认成员函数,在本期我们继续再讨论类和对象中剩余的友元、初始化列表等相关知识,如果需要再了解之前的知识的话,链接奉上:C?类和对象&#xff0…

一、前言

        在之前我们已经讨论过了有关类和对象的前置知识以及类中的六大默认成员函数,在本期我们继续再讨论类和对象中剩余的友元、初始化列表等相关知识,如果需要再了解之前的知识的话,链接奉上:C++?类和对象(中)!!!-CSDN博客、C++?类和对象(上)!!!-CSDN博客,欢迎阅读!

二、再谈构造函数

        1、初始化列表

                (1).引入

        ·        之前我们已经在构造函数部分讨论过有关初始化的内容了,我们知道,构造函数可以完成在实例化对象的同时初始化对象属性的工作了,那么为什么还要引入初始化列表的概念呢?事实上,在构造函数体内赋值不是真正的初始化,这是因为函数体内赋值可以多次赋值,但是初始化时只能初始化一次的,同时类中有以下几类成员时构造函数体内赋值是不能完成的:
                        a.引用成员变量

                        b.const成员变量

                        c.自定义类型成员(同时该类没有默认构造函数)

                观察可以发现,以上三种成员的共同点是在变量实例化的同时就必须进行初始化。

                (2).介绍初始化列表

                        (2).1.初始化列表的语法是:在构造函数名之后,以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个成员变量之后跟一个放在括号内的初始值或者表达式,如下:
                        

                        (2).2.每个成员在初始化列表只能初始化一次

                        (2).3.尽量使用初始化列表进行初始化,因为不论在函数体内是否进行赋值,成员都会先经过初始化列表,事实上,调用默认构造函数、将成员变量的缺省值初始化赋值给成员这些工作都是在初始化列表隐式进行的

                        (2).4.成员变量在类中声明的次序就是它们在初始化列表中初始化的次序,与它们在初始化列表中的位置无关,下面的代码以及运行结果可以说明这个问题:
                        代码:      

class A{public:A(int a):_a1(a),_a2(_a1){}void Print() {cout<<_a1<<" "<<_a2<<endl;}private:int _a2;int _a1;};int main() {A aa(1);aa.Print();}

                        运行结果:
                        

                        以上运行结果就是因为先用一个随机值初始化了_a2,再用1初始化了_a1,导致最终产生以上运行结果

                        (2).5.同时在初始化列表可以初始化const类型、引用类型、没有默认构造函数的自定义类型:
                        

        2、explicit关键字

                构造函数不仅可以构造、初始化对象,对于接受单个参数的构造函数,还具有隐式类型转换的功能,接受单个参数的构造函数的都有:
                a.构造函数只有一个参数

                b.构造函数虽然有多个参数,但是除了第一个之外全都有缺省值

                c.全缺省的构造函数

                见如下代码:
                                

                可以观察到,以上代码中将2020这一int类型直接赋值给了Date类型,事实上在这个过程中,2020这一整型调用了构造函数,利用构造函数的隐式类型转换性质构造了一个临时的日期类对象,然后调用拷贝构造函数,对d完成了初始化,但是由于连续两次构造太浪费,所以编译器一般会优化掉,直接使用2020对d进行拷贝构造

                这时候如果使用explicit关键字修饰构造函数,构造函数就失去了隐式类型转换的功能,这时候就会报错。

三、static成员

        1、概念

        声明为static的类成员变量、用static修饰的成员函数,分别称为静态成员变量,静态成员函数,静态成员变量一定要在类外进行初始化。

        2、特性

                (1).静态成员为所有类对象共享,不属于某一个具体的对象,存放在静态区

                (2).静态成员变量必须在类外进行初始化,定义时不加static关键字,类中的只是声明、

                (3).类的公有静态成员可以使用类名::静态成员或者类对象.静态成员访问

                (4).静态成员函数没有隐式的this指针,不能访问非静态成员

                (5).静态成员也是成员,受访问限定符的限制

        3、应用

        下面的代码巧妙的利用了静态成员的特点,可以求出程序中共创建了多少类对象:
                

四、友元

        友元是一种突破封装的方式,可以为我们提供不少方便,但同时又因为它突破了封装,所以带来了一定的风险,不能多用。

        友元分为:友元函数和友元类

        1、友元函数

                (1).引入

                我们现在要尝试重载operator<<,发现这样一个问题:我们不能将<<重载为一个成员函数,这是因为我们希望<<操作符的左操作数是ostream类型,但是由于this指针一定占用形参的第一个位置,所以只能将<<重载为全局函数,看下面的代码:
                

                可以看到在上面我们在全局重载了<<操作符,但是报了错,这是因为日期类中的成员变量都是私有的,怎么办呢?这时候就要使用我们接下来要讨论的友元函数了。

                (2).介绍

                        (2).1.友元函数可以直接访问类的私有成员,它是定义在类外的普通函数,不属于任何类,在类中声明时要加friend关键字,借用类的友元函数这一特性,我们就可以解决上面的重载<<操作符的问题了:

                        

                        可以观察到,在将<<操作符重载声明为日期类的友元函数时,没有报错,这时候,<<操作符重载就可以访问日期类的私有成员变量了

                        (2).2.友元函数不可以用const修饰,这是由于const修饰的是成员函数隐藏的this指针,友元函数只是一个普通函数,没有this指针

                        (2).3.友元函数可以在类的任何地方声明,不受访问限定符的限制

                        (2).4.一个函数可以是多个类的友元函数

                        (2).5.友元函数与普通函数的调用原理相同

        2、友元类

                友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类的非公有成员,对于友元类需要注意:
                友元关系是单向的,不具有交换性、传递性,同时也不可以继承,这一点在在以后继承的位置详细介绍

                以下的日期类Date就是时间类Time的友元类,在日期类中可以直接访问时间类中的非共有成员:
                

class Time
{friend class Date;
public:Time(int hour = 1, int minute):_hour(hour),_minute(minute){}
private:int _hour;int _minute;
};class Date
{
public:Date(){_year = 1;_month = 1;_day = 1;}void time(int hour, int minute){_t._hour = hour;_t._minute = minute;}private:int _year;int _month;int _day;Time _t;
};

五、内部类

        1、概念

        如果一个类定义在另一个类内部,这个内部类就叫做外部类的内部类,内部类天然是外部类的友元类,可以在内部类中访问外部类的非公有成员,但外部类不可以访问内部类的非公有成员,外部类对于内部类没有任何特权。

        2、特性

                (1).内部类可以定义在外部类的public、protected、private都是可以的

                (2).内部类可以直接访问外部类的static成员,不需要外部类的对象/类名

                (3).sizeof(外部类) == 外部类,与内部类没有任何关系

六、结语

         这就是本期关于C++类和对象(下)的所有内容了,希望对大家有所帮助,感谢各位于晏、亦菲的阅读,欢迎大家和我一起讨论、进步。

        
                        

http://www.dtcms.com/wzjs/196684.html

相关文章:

  • 重庆专业做淘宝网站网络竞价推广开户
  • 南京哪公司建设网站凡科建站官网入口
  • 内部网站建设公司各大搜索引擎提交入口
  • 设计一套网站费用深圳最好seo
  • 温州网站公司开一个网站需要多少钱
  • 优酷 做视频网站还能成功吗app注册推广团队
  • 做物流网站注意什么做网络推广一个月的收入
  • 那可以做网站网站的优化seo
  • 推广网站怎么做能增加咨询如何优化关键词的方法
  • 插插插网站正在建设中app开发网站
  • 上海网站建设案例宁波关键词排名优化
  • 网站首页弹窗代码百度服务中心
  • 企业网站源码搜一品资源网河南关键词排名顾问
  • 传媒公司是不是很多诈骗哈尔滨seo网络推广
  • wordpress设置更改超级优化大师
  • 独山县哪里有做网站的windows优化大师有哪些功能
  • 郑州做网站公司seo查询百科
  • 离石做网站的网络公司2020年十大关键词
  • 永久免费做网站app中国新闻
  • 个人网站可以收费吗浏览器大全
  • 深圳网站建房国家卫健委每日疫情报告
  • wordpress查询文章分类网站优化是什么意思
  • 西昌市规划建设局网站网页代码
  • 网站建设实训作业东莞百度快速优化排名
  • 为什么上不了建设银行个人网站免费舆情网站
  • htm网站模板如何做好平台推广
  • 可信赖的深圳网站建设新闻头条新闻
  • 怎么做阿里巴巴国际网站seo在线优化平台
  • 杭州营销型网站建设排名广州网站优化方案
  • 网站建设对客户的优势营业推广的概念