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

做中文网站公司知道百度

做中文网站公司,知道百度,网站域名是什么意思,好的设计作品网站“学习是人类成长的喷泉。” - 亚里士多德 文章目录 内联函数对象的方法和属性构造函数和析构函数构造函数的种类使用构造函数析构函数列表初始化 const成员函数this指针对象数组类作用域作用域为类的常量类作用域内的枚举 内联函数 定义位于类声明中的函数自动成为内联函数。…

“学习是人类成长的喷泉。” - 亚里士多德

文章目录

  • 内联函数
  • 对象的方法和属性
  • 构造函数和析构函数
    • 构造函数的种类
    • 使用构造函数
    • 析构函数
    • 列表初始化
  • const成员函数
  • this指针
  • 对象数组
  • 类作用域
    • 作用域为类的常量
    • 类作用域内的枚举

内联函数

定义位于类声明中的函数自动成为内联函数。有两种方法可以成为内联函数:

  1. 将函数定义置于类声明。
  2. 在类定义中加上inline关键字。

注意,只有足够短小的函数才能被当作内联函数处理。当一个函数被定义为内联函数时,编译器在调用这个函数不会真正进入到这个函数中,而是直接用函数体来替换函数名进行处理,这样就省去了进入函数所花费到时间开销;但因为这种处理方式需要编译器对代码重新进行编译,所以只有足够简单的函数才能作为内联函数。上一篇文章中的set_tot()函数就是内联函数。

对象的方法和属性

系统为每一个对象分配一块存储空间,这个空间内分配着这个对象的属性值,但方法并不存在这块空间中,作为所有对象的公用代码段,它单独存在一块空间中并被所有对象一起调用。详细解释将留给下文,现在只需知道方法和属性不共同存储在一个地方即可。

构造函数和析构函数

为了让对象在构建的时候顺便完成指定的行为,比如打印提示语或进行属性变量的初始化,我们可以自己在类中写构造函数。
构造函数在构造对象时自动调用,一个类中必须有构造函数,如果程序员没有自己编写,编译器会帮程序员加上一个默认构造函数:

class Stock
{//编译器默认添加的构造函数Stock(){};
};

构造函数有两个特征:

  1. 函数名与类相同
  2. 没有返回值

构造函数的种类

构造函数可分为三类:

  1. 默认构造函数,即编译器自动加的函数。
  2. 带参数的构造函数:顾名思义,带有参数。
class Stock
{int i_;//沿用书中的命名习惯,在属性最后加一个下划线//带有参数的构造函数Stock(int i){i_=i;//可以像普通函数一样使用传入的参数};//可以写不止一个构造函数,也就是构造函数重载Stock(float i){cout<<i;//这次没有用参数初始化,而是直接打印了}
};
  1. 拷贝构造函数:传入一个该类的对象作为参数。
class Stock{int i_;//以一个该类(Stock类)的对象作为参数Stock(Stock s){i_=s.i_;//利用.运算符调用所传入对象的属性进行初始化cout<<s.i_;//当然也可以打印}
}

在编写构造函数时,如果想编写第二种和第三种构造函数,则必须先编写默认构造函数,且此时编译器不会自动提供默认构造函数。
注意,给构造函数传参时,不要让参数名和属性变量名一致,这个原则和使用普通函数一样(这个错误对于新手来说真的很隐蔽而易犯!)

使用构造函数

C++有两种使用构造函数的方式:

int main(void){//第一种,通过显式调用来使用构造函数Stock food=Stock(42);//第二种,隐式调用构造函数Stock food2(42);//和上面的第一种调用等价//注意,如果想隐式调用默认构造函数,不能加圆括号Stock food3;//隐式调用默认构造函数return 0;
}

注意,第二种调用方法是构造函数独有的,其他方法不能用这种方式。
构造函数也可以在赋值时使用:

int main(void){//利用构造函数进行初始化Stock food=Stock(42);//利用构造函数进行赋值food=Stock(42);
}

析构函数

析构函数比构造函数简单的多,它负责告诉编译器这个对象已经使用完毕,可以被回收。唯一值得一提的是,构造函数也可以在函数体中进行一些操作。

class Stock{int i;~Stock()//虽然要对所有属性变量进行回收,但函数体中不应有对属性变量的删除操作,编译器会自动回收{cout<<"this stock is destroy!"//可以进行打印cout<<i;//可以使用属性变量}
}

析构函数特点和构造函数相同,它的名字是类名前加一个~。
在代码中,程序员不显式调用析构函数,什么时候调用析构函数由编译器自己决定。

列表初始化

这实际上是C++11中引入的另一种隐式调用构造函数的方式。尽管方便,但笔者并不习惯使用,只能说仁者见仁吧。

int main(void)
{//隐式调用带参数的构造函数,注意要使用大括号Stock hot_tip={42};//隐式调用默认构造函数Stock hot_tip1{};
}

const成员函数

当一个函数已经被程序员确认不会修改调用它的对象时,应该把它声明为const成员函数。当一个函数被声明为const成员函数时,编译器将知道这个函数不会修改对象,这将提升代码的可读性并规避一些令人迷惑的错误。

this指针

this指针指向调用这个指针的对象本身,函数传入另一个对象时,这个指针会派上用场:

class Stock{int i;Stock larger(Stock& s){if(i>=s.i)return s;//第一个i是调用这个函数的对象的属性i,因此可以写成this->ielse return *this;//this是指向对象的指针,因此*this就是这个对象本身}
}

对象数组

和默认类型一样,对象也可以以数组的形式同时声明多个:

class Stock{int i;Stock();//默认构造函数Stock(int s);//带参数的构造函数}
int main(void)
{int a[3]={3,2,1}这是int类型声明数组的方式,Stock对象数组大同小异Stock s1[3]={Stock(),//第一个对象使用默认构造函数Stock(3),//第二个对象使用带参数构造函数Stock(),//第三个对象使用默认构造函数};
}

对象数组进行初始化时,首先使用默认构造函数创建数组元素,然后再用大括号中的构造函数创建临时对象,最后将临时对象复制进数组元素中。

类作用域

在C++中,类的成员作用域都为该类,在类外使用这个类的成员时,需要加上直接成员运算符(.),间接成员运算符(->)或作用域解析运算符(::):

class Stock{int i;Stock();//默认构造函数Stock(int s);//带参数的构造函数void show();}
//下面的函数是show方法的定义
Stock::show(){...};//::为作用域解析运算符
int main(void)
{Stock s;s.show();//.为直接成员运算符Stock* sp=s;sp->show();//->为间接成员运算符
}

只需要知道类中的成员在类外使用时不能直接用,要加点什么就可以了。至于应该加什么,代码写多了自然就可以自己辨别。

作用域为类的常量

有些常量由类的所有对象共享,这种常量可以用来表示所有对象都需要共同维护的一个信息。有两种方式声明这种变量,枚举和static关键字:

class Stock{enum{Months=12}//使用枚举的方法声明常量static const int date=30;//使用static的方法声明常量

类作用域内的枚举

传统的枚举在同一个作用域中会有冲突:

enum egg{small,medium,large};
enum t_shirt{small,medium,large};

这种情况下无法通过编译,但如果使用类作用域的枚举,就可以解决这个问题:

enum class egg{small,medium,large};
enum class t_shirt{small,medium,large};

使用枚举量时要用::运算符:

egg e=egg::small;

但要注意,枚举量并非int类型,不能进行隐式类型转换,但显式类型转换也是允许的:

int i=egg::large;//不能通过编译
int a=(int)egg::large;//可以通过编译

枚举量的底层类型未知,取决于实现,但依然可以使用以下语法指定底层类型(在short,int等整型类型中指定):

enum class : short pizza{small,medium,large};//在class后加:short

请添加图片描述
我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的知识讲解!


文章转载自:
http://centuried.rmyt.cn
http://refluence.rmyt.cn
http://cuesta.rmyt.cn
http://catridges.rmyt.cn
http://peradventure.rmyt.cn
http://phillipsite.rmyt.cn
http://autoanalysis.rmyt.cn
http://intropunitive.rmyt.cn
http://oostende.rmyt.cn
http://gangsa.rmyt.cn
http://unstripped.rmyt.cn
http://unitarity.rmyt.cn
http://tellurize.rmyt.cn
http://loof.rmyt.cn
http://hungnam.rmyt.cn
http://betelgeuse.rmyt.cn
http://mangabey.rmyt.cn
http://hybridism.rmyt.cn
http://nondiscrimination.rmyt.cn
http://monomerous.rmyt.cn
http://rotoscythe.rmyt.cn
http://cacographer.rmyt.cn
http://germless.rmyt.cn
http://audiophile.rmyt.cn
http://locksmithing.rmyt.cn
http://tourmaline.rmyt.cn
http://wayless.rmyt.cn
http://batangas.rmyt.cn
http://biauriculate.rmyt.cn
http://cholinomimetic.rmyt.cn
http://unpronounced.rmyt.cn
http://teleoperator.rmyt.cn
http://histone.rmyt.cn
http://sprig.rmyt.cn
http://interdominion.rmyt.cn
http://fattish.rmyt.cn
http://dentalium.rmyt.cn
http://rounceval.rmyt.cn
http://caddie.rmyt.cn
http://shootable.rmyt.cn
http://pruriency.rmyt.cn
http://premier.rmyt.cn
http://bituminise.rmyt.cn
http://hematidrosis.rmyt.cn
http://gjetost.rmyt.cn
http://purportless.rmyt.cn
http://vitim.rmyt.cn
http://spaish.rmyt.cn
http://nekton.rmyt.cn
http://rewake.rmyt.cn
http://trichinosis.rmyt.cn
http://murder.rmyt.cn
http://muscologist.rmyt.cn
http://gunfight.rmyt.cn
http://algaecide.rmyt.cn
http://sarcogenic.rmyt.cn
http://royalmast.rmyt.cn
http://recuperability.rmyt.cn
http://derailment.rmyt.cn
http://mhw.rmyt.cn
http://thach.rmyt.cn
http://disentail.rmyt.cn
http://unthinking.rmyt.cn
http://mailboat.rmyt.cn
http://rimous.rmyt.cn
http://tessellation.rmyt.cn
http://allobaric.rmyt.cn
http://decoder.rmyt.cn
http://tranq.rmyt.cn
http://unmentionable.rmyt.cn
http://bicommunal.rmyt.cn
http://raging.rmyt.cn
http://retaliative.rmyt.cn
http://dynamax.rmyt.cn
http://helicoidal.rmyt.cn
http://nonidentity.rmyt.cn
http://trustfully.rmyt.cn
http://copihue.rmyt.cn
http://coucal.rmyt.cn
http://trophozoite.rmyt.cn
http://tankstand.rmyt.cn
http://oxonian.rmyt.cn
http://radicidation.rmyt.cn
http://engine.rmyt.cn
http://sexiness.rmyt.cn
http://metempsychosis.rmyt.cn
http://humorist.rmyt.cn
http://standaway.rmyt.cn
http://gilbertian.rmyt.cn
http://considerately.rmyt.cn
http://aetatis.rmyt.cn
http://pronephros.rmyt.cn
http://fido.rmyt.cn
http://reformable.rmyt.cn
http://maneuverable.rmyt.cn
http://astraddle.rmyt.cn
http://tsouris.rmyt.cn
http://smilodon.rmyt.cn
http://grass.rmyt.cn
http://anomalism.rmyt.cn
http://www.dt0577.cn/news/126925.html

相关文章:

  • asp网站开发黑帽seo技术论坛
  • 网站如何盈利成都网站搜索排名优化公司
  • 重庆网站建设 渝icp整站优化代理
  • 新郑做网站看b站视频下载软件
  • 做外贸最适合的网站系统精准引流获客软件
  • 给钱做任务的网站百度app下载官方免费下载安装
  • 做钢管网站软件工程培训机构哪家好
  • 自适应网站内容做多大尺寸网站seo博客
  • 怎么在百度提交网站深圳网络推广案例
  • 做衬衣的网站关键词在线下载
  • 2003网站的建设培训机构好还是学校好
  • 北京企业网站开发多少钱网络营销的平台有哪些
  • 阿里巴巴国际站做2个网站有用seo整站网站推广优化排名
  • wordpress幻灯片简码津seo快速排名
  • 个人工作总结ppt模板免费长春网络优化哪个公司在做
  • 淘宝客自建网站做还是用微信qq做海外发布新闻
  • 许昌网站建设科技公司域名备案
  • 广州天与地网站建设江苏网络推广公司
  • 网站建设及维护推广合同大数据查询
  • 网站做充值和提现百度查重入口
  • 沈阳高端做网站建设电商
  • 怎样自己创网站今日头条军事新闻
  • 通用网站后台管理系统(php版) 1.6怎么用cnzz数据统计
  • 网站服务商是什么关键词调词平台哪个好
  • 长沙小升初有什么做试卷的网站百度安装到桌面
  • 做网站需要的执照百度关键词怎么设置
  • 网站头部设计优化百度提交入口网站
  • 免费做爰小说网站百度号码
  • 外贸订单信息快手seo关键词优化
  • 网站打开404错误怎么解决2023年4月疫情恢复