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

凉山州城乡和住房建设厅网站华为云wordpress

凉山州城乡和住房建设厅网站,华为云wordpress,网站开发众筹,做网站找哪家公司比较好【系列专栏】#xff1a;博主结合工作实践输出的#xff0c;解决实际问题的专栏#xff0c;朋友们看过来#xff01; 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享…【系列专栏】博主结合工作实践输出的解决实际问题的专栏朋友们看过来  《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享 欢迎商业项目咨询10年软硬全栈内功助力解决您的尊贵需求。 原文链接https://winter.blog.csdn.net/article/details/129397401 —————————————————————————————————— 目录 0 引言 1 重载 1.1 函数重载 1.2 运算符重载 2 多态 3 总结 0 引言 上一次博文讲解了C的类和对象以及继承的特征本次博文总结下C面向对象的另外两个关键特征——重载与多态。 1 重载 C 允许在同一作用域中的某个函数和运算符指定多个定义分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明但是它们的参数列表和定义实现不相同。 当调用一个重载函数或重载运算符时编译器通过把所使用的参数类型与定义中的参数类型对比决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程称为重载决策。 1.1 函数重载 在同一作用域内可声明多个功能类似的同名函数这些同名函数的形参参数个数、类型或者顺序必须不同我们不能仅通过返回类型的不同来重载函数。 Qt源码中运用了大量的函数重载不仅在 C中在其他语言如Java等也有 因为需要不同所以有重载各种各样的函数。 下面做个示例程序说明函数重载的使用方法。 以之前博文写的人 这个类为例打印这个人的体重分别以整数和小数记录并分别打印这个通过函数重载实现就很容易。 新建一个07_func_overload目录其下新建一个07_func_overload.cpp文件代码如下 #include iostream #include string using namespace std;class People { public:string name;void getWeight(int weight){cout weight: weight Kg endl;}void getWeight(double weight){cout weight: weight Kg endl;}};int main() {People people;people.name 小芳;people.getWeight(90);people.getWeight(90.5);return 0; } 程序中在People类中定义了两个getWeight()方法一个参数为int另一个为double这就构成了函数重载在main函数中传入不同的参数程序就会匹配不同的重载函数。 编译程序运行结果如下 以上简单的实例我们知道了函数重载的用法有时需要避免用户传入的参数类型不在重载函数里编译器报错这种情况这时可以多写几个重载函数设置多个参数类型。 1.2 运算符重载 运算符重载实质是函数重载或函数多态目的在于让人能够用同名的函数来完成不同的基本操作。要重载运算符需要使用被称为运算符函数的特殊函数形式 重载运算符的格式如下 返回类型说明符 operator 运算符符号(参数表) {函数体 } 可重载的运算符列表 不可重载的运算符列表 实际上重载运算符在实际中应用并不多下面以“”为例了解下这种思想。 下面举个例子对象作为参数进行传递对象的属性使用 this 运算符进行访问。 声明加法运算符用于把两个People 对象体重相加返回最终的 People 对象然后得到第三个People 对象的体重。 新建一个08_operator目录其下新建一个08_operator.cpp代码如下 #include iostream #include string using namespace std;class People { public:int weight;People operator(const People p){People people;people.weight this-weight p.weight;return people;} };int main() {People people1;People people2;People people3;people1.weight 10;people2.weight 40;people3 people1 people2;cout people3 weight : people3.weight Kg endl;return 0; } 程序中重载“”运算符注意函数必须与类名同名 把People对象作为传递 使用this 运算符进行访问然后返回一个 People对象。可见重载运算法可以将两个对象相加在普通的运算符中这个做不到的所以重载运算法的意义就体现在此。 编译程序运行结果 2 多态 C中多态意味着调用成员函数时会根据调用函数的对象的类型来执行不同的函数形成多态必须具备三个条件 1必须存在继承关系2继承关系必须有同名虚函数3存在基类类型的指针或者引用通过该指针或引用调用虚函数。虚函数指的是在基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时会告诉编译器不要静态链接到该函数。我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函数这种操作被称为动态链接或后期绑定。 虚函数声明如下 virtual ReturnType FunctionName(Parameter) 虚函数必须实现如果不实现编译器将报错。 纯虚函数若在基类中定义虚函数以便在派生类中重新定义该函数更好地适用于对象但是您在基类中又不能对虚函数给出有意义的实现这个时候就会用到纯虚函数。 纯虚函数声明如下virtual void funtion1()0; 纯虚函数一定没有定义纯虚函数用来规范派生类的行为即接口。 包含纯虚函数的类是抽象类抽象类不能定义实例但可以声明指向实现该抽象类的具体类的指针或引用。 下面通过实例说明多态的使用。 新建一个09_polymorphism目录其下新建一个09_polymorphism.cpp代码如下 #include iostream #include string using namespace std;//动物类 class Animal { public:virtual void speak(){cout Animal的speak()方法 endl;} };//定义一个People类继承Animal class People : public Animal { public:void speak(){cout People的speak()方法 endl;} };//定义一个Dog类继承Animal class Dog : public Animal { public:void speak(){cout Dog的speak()方法 endl;} };int main() {//声明一个 Animal 的指针对象并没有实例化Animal *animal; People people;Dog dog;//存储dog和people对象的地址并调用speak()方法animal people;animal-speak();animal dog;animal-speak();return 0; } 新定义的People和Dog类都继承了Animal基类可见基类Animal中的speak()方法前加了virtual关键字变成了虚函数虚函数是C中实现多态的机制核心就是通过基类访问派生类定义的函数 上面的实例是基类 Animal 声明了一个指针 animal。然后通过基类的指针来访问 Dog 类对象与 People 类的对象的 speak()方法前提是基类的 speak()方法必须声明为虚函数且基类和派生类中定义的方法名要相同否则基类的指针将访问到基类自己的speak()方法。 编译程序运行如下 3 总结 本次博文总结了C的面向对象特征重载和多态重载是在同一作用域内可声明多个功能类似的同名函数这些同名函数的形参必须不同可以根据实际需要重载各种各样的函数多态的实现机制是通过虚函数核心就是通过基类访问派生类定义的函数有了多态我们可以在程序中任意点可以根据所调用的对象类型来选择调用的函数实现动态链接或后期绑定的效果。 作于202303081445已归档 ——————————————————————————————————— 本文为博主原创文章未经博主允许不得转载 若本文对您有帮助轻抬您发财的小手关注/评论/点赞/收藏就是对我最大的支持 祝君升职加薪鹏程万里
http://www.dnsts.com.cn/news/54848.html

相关文章:

  • 投资理财网站建设规划书公司建立网站青岛电话
  • 深圳网站设计专家乐云seo品牌做网站排名要懂那些
  • 广电网络公司优秀营销案例陕西关键词优化推荐
  • 建设银行学习网站东营做网站哪里好
  • 网站建设职业描述广东机械加工厂
  • 在线制作印章免费长沙seo网络营销推广
  • 免费的网站推广怎么做效果好?陕西工程项目信息网
  • 微信网站怎么收款平面广告设计师的工作内容
  • 台州网站如何制作成都网推公司
  • 为什么我网站打不开在线网站流量查询
  • 做网站超链接用什么软件网站建设需要方案
  • 成都网站建设开发北京西站列车时刻表最新
  • 自己做的网站搜索不到部队网站怎么做
  • 银川网站开发制作正规代运营公司排名
  • 网站建设中中文模板网页搭建服务平台
  • 网站服务器的作用wordpress编辑分类目录
  • 网站一屏做多大php网站开发实用技术课后习题
  • 做网站不搭建本地环境销售外包服务
  • 网站开发iis怎么配置昆明手机网站开发
  • 网站怎么做响应式布局创建微信小程序要钱吗
  • 做苗木免费网站php网站开发手机绑定
  • 做网站需要懂代码么有没有专门做二手车网站
  • 阳信做网站怎么查看一个网站开发语言
  • 危险网站怎么做二维码wordpress首页分类
  • 平面设计做画册用网站WordPress灯箱效果移动适配
  • 流程做网站宜兴网站建设哪家好
  • 垦利网站定制机关网站建设考核测评总结
  • 营销网站建设平台wordpress正文页面
  • 景德镇建站公司电影网站模板源代码
  • 关于网站优化的文章浙江大洋建设集团有限公司网站