C++入门笔记--神秘的家伙--this关键字的使用+继承

C++入门笔记--神秘的家伙--this关键字的使用+继承,第1张

概述本文章向大家介绍C++入门笔记--神秘的家伙--this关键字的使用+继承,主要包括C++入门笔记--神秘的家伙--this关键字的使用+继承使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

this 

在对象的世界里,有一个特殊的指针,他叫做this,我们从来都没有见过他,但是他却从来都存在。我们用一个简单的例子来认识他。

#include

class Human{//类名

public:

std::string name;//名字

Human(std::string name); //定义一个带参的构造函数

};

Human::Human(std::string name){

name = name;//很显然我们是想把输入进来的形参赋值给类里的属性name 但是同名 编译器怎么识别呢 只是有二义性的

}

int main(){

return 0;

}

我们看到,在name = name之前,所有的语法都没有任何问题:

Human()的构造函数里有一个名为name的参数

孙然他与Human类里边的属性同名,但是却属于不相干的两样东西,所以是没有语法错误的

可是,怎样才能让构造器知道哪个是参数,哪个是属性呢???这就是存在的二义性

这时候就需要this指针了,this一直是指向当前类生成的对象,所以我们可以用this->name = name;这样就很显然了。现在编译器就懂了,赋值 *** 作符的左边将被解释为当前对象的name属性,右边将被解释为构造器的传入进来的name参数。

注意:使用this指针的基本原则是:如果代码不存在二义性隐患,就不必使用this指针。this指针在一些更加高级的方法里也会用到,但是我们暂时不像把事情弄得那么复杂...........

继承

继承是面对对象编程技术的一个核心概念,他使传统的软件开发模式发生了革命性的变化。继承机制使得程序员可以创建一个类的堆叠层次结构,每个字类均继承在他的基类里定义的方法和属性。通过继承机制,程序员可以对现有的代码进行进一步的扩展,并应用在新的程序中。

基类:是可以派生出其他的类,也称做父类或者超类。

子类:子类是从基类派生出来的类

例如:

乌龟和猪都可以吃东西,睡觉,但是乌龟可以游泳,猪会爬树.

我们可以创建一个父类Animal,这个父类里可以有派生类的共同属性和方法(吃东西,睡觉......),要将他们共同的动作抽象化为方法-(eat(),sleep())

然后Pig和Turtle是派生类,所以Pig类里有climb(),Turtle()类里有swim()。

动物都有嘴巴,眼睛,这是名词不是动作,所以不能抽象化为方法,而是抽象化为属性,所以可以将mouth转变为Animal类的一个成员变量

现在思路就已经打通,我们已经能够理清一个类的层次结构了,接下来需要转换成代码,而且要用到继承关系的描述的语法,

class SubClass:public SuperClass{.....}//语法

class Pig:public Animal{.....};//举例子

 至于这个public的用法,在后面会讲到,现在只需要照搬就可以了。现在对上面所描述的例子进行一个类的描写:

#include

#include

class Animal{//类名

public:

std::string mouth;

voID eat();

voID sleep();

};

class Pig:public Animal{

public:

voID climb();

};

class Turtle:public Animal{

public:

voID swim();

};

voID Animal::eat(){

std::cout<<"I'm eating!n"<

//endl也是std里的,没有定义命名空间,所以在这里要加上作用域std

}

voID Animal::sleep(){

std::cout<<"I'm sleePing!Don't disturb me!n"<

}

voID Pig::climb(){

std::cout<<"I can climb the tree!n"<

}

voID Turtle::swim(){

std::cout<<"I can swim!n"<

}

int main(){

Pig pig;

Turtle turtle;

pig.eat();

turtle.eat();

pig.climb();

turtle.swim();

return 0;

}

运行结果如下:预料之中,运行成功! 

总结

以上是内存溢出为你收集整理的C++入门笔记--神秘的家伙--this关键字的使用+继承全部内容,希望文章能够帮你解决C++入门笔记--神秘的家伙--this关键字的使用+继承所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1264958.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存