c++第五章-(类与对象、构造器和析构器)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++第五章-(类与对象、构造器和析构器),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3957字,纯文字阅读大概需要6分钟。
内容图文
1.构造器与结构体的区别:构造器多支持方法。其作用有申请内存,初始化变量。
在c++中构造器没有返回值:语法Class Name();
2.析构器的作用:释放内存。
在c++中析构器没有返回值:语法~ClassName();
class Animal { public : std:: string mouth; std:: string name; void eat(); void sleep(); void drool(); Animal(std:: string theName); }; class Pig:public Animal { public: void climb(); Pig(std::string theName); }; class Turtle:public Animal { public: void swim(); Turtle(std::string theName); }; void Animal::eat() { std::cout << this->name << "会吃东西\n"; } void Animal::sleep() { std::cout << this->name << "会睡觉\n"; } void Animal::drool() { std::cout << this->name << "会流口水\n"; } void Pig::climb() { std::cout << this->name <<"会爬树\n"; } void Turtle::swim() { std::cout << this->name << "会游泳\n"; } /** * 构造器,子类的构造器的值是通过改变父类的值的来的 */ Animal::Animal(std::string theName) { this->name = theName; } Pig::Pig(std::string theName):Animal(theName) { } Turtle::Turtle(std::string theName):Animal(theName) { } int main(int argc, constchar * argv[]) { Animal animal("大动物"); animal.eat(); animal.sleep(); animal.drool(); Pig bigPig("小母猪"); Turtle greenTurtle("小甲鱼"); bigPig.climb(); greenTurtle.swim(); return0; }
控制台返回的结果:
大动物会吃东西
大动物会睡觉
大动物会流口水
小母猪会爬树
小甲鱼会游泳
2.继承情况下构造器和析构器的生命周期
class BaseClass { public : BaseClass(); ~BaseClass(); void doSomething(); }; class SubClass:public BaseClass { public: SubClass(); ~SubClass(); }; void BaseClass::doSomething() { std::cout << "父类做了某件事" << std::endl; } BaseClass::BaseClass() { std::cout << "父类构造器\n"; } SubClass::SubClass():BaseClass() { std::cout << "子类构造器\n"; } BaseClass::~BaseClass() { std::cout << "父类析构器\n"; } SubClass::~SubClass() { std::cout << "子类析构器\n"; } int main(int argc, constchar * argv[]) { SubClass subclass; subclass.doSomething(); std::cout << "完工" << std::endl; return0; }
控制台打印结果:
父类构造器
子类构造器
父类做了某件事
完工
子类析构器
父类析构器
3. class SubClass:private BaseClass//":private"说明只有SubClass该类可以使用基类的元素。
4.覆盖
class Animal { public : std:: string mouth; void eat(); void eat(int eatCount); void sleep(); void drool(); Animal(std::string theName); protected: std::string name; }; class Pig:public Animal { public: void climb(); //overRidevoid eat(); Pig(std::string theName); }; class Turtle:public Animal { public: void swim(); //overRidevoid eat(); Turtle(std::string theName); }; void Animal::eat() { std::cout << this->name << "会吃东西\n"; } void Animal::eat(int eatCount) { /** * OverLoad重载 */ std::cout << "饿了,该吃上" << eatCount << "碗饭" << std::endl; } void Animal::sleep() { std::cout << this->name << "会睡觉\n"; } void Animal::drool() { std::cout << this->name << "会流口水\n"; } void Pig::climb() { std::cout << this->name <<"会爬树\n"; } void Pig::eat() { //overRide覆盖 Animal::eat(); std::cout << this->name << "在吃菜\n"; } void Turtle::swim() { std::cout << this->name << "会游泳\n"; } void Turtle::eat() { //overRide覆盖 Animal::eat(); std::cout << this->name<< "在吃海草\n"; } /** * 构造器,子类的构造器的值是通过改变父类的值的来的 */ Animal::Animal(std::string theName) { this->name = theName; } Pig::Pig(std::string theName):Animal(theName) { } Turtle::Turtle(std::string theName):Animal(theName) { } int main(int argc, constchar * argv[]) { Animal animal("大动物"); animal.eat(); animal.sleep(); animal.drool(); std::cout<< std::endl; std::cout<< std::endl; Pig bigPig("小母猪"); bigPig.climb(); Turtle greenTurtle("小甲鱼"); greenTurtle.swim(); std::cout<< std::endl; std::cout<< std::endl; //两个子类覆盖过的吃东西方法 bigPig.eat(); greenTurtle.eat(); std::cout << std::endl; std::cout << std::endl; //重载吃东西的方法 bigPig.Animal::eat(3); return0; }
控制台输出结果:
大动物会吃东西
大动物会睡觉
大动物会流口水
小母猪会爬树
小甲鱼会游泳
小母猪会吃东西
小母猪在吃菜
小甲鱼会吃东西
小甲鱼在吃海草
饿了,该吃上3碗饭
5.继承下来的子类不能对继承下来的方法进行重载overLoad
原文:http://www.cnblogs.com/huen/p/3815550.html
内容总结
以上是互联网集市为您收集整理的c++第五章-(类与对象、构造器和析构器)全部内容,希望文章能够帮你解决c++第五章-(类与对象、构造器和析构器)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。