c++ 16 this 和 继承

#include <iostream>
#include <string>
using namespace std;

class Animal
{
public:
    Animal();
    Animal(string name);
    string mouth;
    void eat();
    void sleep();
    void drool();
    string name;
};

class Pig : public Animal
{
public:
    Pig();
    Pig(string name);
    void climb();
};

class Turtle : public Animal
{
public:
    Turtle();
    Turtle(string name);
    void swim();
};

Animal::Animal()
{
    cout << "父类的构造函数先调用" << endl;
    this->name = "NULL ";
}
Animal::Animal(string name){
    this->name = name;
}

void Animal::eat()
{
    cout << name << "I am eating " << endl;
}

void Animal::sleep()
{
    cout << name << "I am sleeping , don‘t disturb me " << endl;
}

void Animal::drool()
{
    cout << name << " i am female , when i look male , i will flow water" << endl;
}

Pig::Pig(){
    cout << name << "子类Pig的构造器后被调用" << endl;
}

Pig::Pig(string name) : Animal(name) //继承了子类的构造器 :
{
    cout << name << "子类Pig的构造器后被调用" << endl;
}

void Pig::climb()
{
    cout << name << " 我是一个漂亮的母猪, 我会上树, 我正在上树" << endl;
}

Turtle::Turtle(){
    cout << "子类Turtle的构造器后被调用" << endl;
}

Turtle::Turtle(string name) : Animal(name) //继承了子类的构造函数 :
{
    cout << "子类Turtle的构造器后被调用" << endl;
}

void Turtle::swim()
{
    cout << "我是一只小甲鱼,当母猪要来抓我的时候,我就游到海里。。 哈哈" << endl;
}

int main()
{
    Pig pig("亨利");
    Turtle turtle("龟仙人");

    pig.eat();
    turtle.eat();
    pig.climb();
    turtle.swim();

    return 0;
}

#include <iostream>
#include <string>
using namespace std;

class BaseClass
{
public:
    BaseClass();
    ~BaseClass();
    void dosth();
};

class SubClass : public BaseClass
{
public:
    SubClass();
    ~SubClass();
};

BaseClass::BaseClass()
{
    cout << "进入基类构造器" << endl;
    cout << "我在基类构造器干了些事" << endl;
}

BaseClass::~BaseClass()
{
    cout << "进入基类析构器" << endl;
    cout << "我在基类的析构器干了些事" << endl;
}

void BaseClass::dosth()
{
    cout << "我干了些事" << endl;
}

SubClass::SubClass()
{
    cout << "进入子类构造器" << endl;
    cout << "我在子类构造器干了些事" << endl;
}

SubClass::~SubClass()
{
    cout << "进入子类析构器" << endl;
    cout << "我在子类的析构器干了些事" << endl;
}

int main()
{
    SubClass sub;

    sub.dosth();

    cout << "程序运行结束" << endl;

    return 0;

}
/* vim: set ts=4 sw=4 sts=4 tw=100 */

时间: 2024-10-12 03:34:38

c++ 16 this 和 继承的相关文章

(16)C#继承

继承格式 class 子类:父类 { ....... } 子类能够继承父类所有的字段和方法. 子类只能有一个父类.

继承(五)

继承 继承,是面向对象三大特征之一,继承的出现,是为了减少很多的冗余代码,因为是把各个类中,把相同特征和行为收集到另一个类中,然后这些类继承于这个集中类,可以把这个集中类的所有的特征和行为都继承过来.然后使用. 说到类了,则应该提到子类和父类,这两者是同时存在的,不能说我是父类,也不能说我是子类,两者相互依存.谁是谁的父类,谁是谁的子类. 子类继承父类,是单向的,两者之间不能相互继承. 继承还具有传递性,用白话来说就是:B类如果继承于A类,C类继承于B类,此时B类就是A类的子类,C类就是B类的子

Java继承基础版

继承是软件开发中实现代码复用的有效手段,如果一个类A继承了类B那么类B中的public.protected及默认修饰符修饰的实例成员或静态成员将被类A继承,也可以说类B的成员就是类A的成员而类A在此基础上还可以扩展新的成员. 如果两个类(类A和类B)存在相同的成员则可以抽象出它们的父类(将两个类的相同成员放在父类)类C,从而实现代码的复用. 语法: 1 //类c2 public abstract Animal{ 3 public static String Color://静态成员 4 publ

继承 2014年6月8日18:13:52

1[1] #region 李氏替换法则 2 //对象new Dog()是一个实际存在的东西:变量d是一个标签. 3 Dog d1 = new Dog();//对象的个数怎么算??一个new就是一个对象!~ 4 5 //父类的变量指向子类的对象(李氏替换法则) 6 Animal a1 = d1;//等价于下面式子 7 Animal a2 = new Dog();//符号=其实就是给实在的东西贴标签的过程. 8 9 //Dog d = a2;//系统报错,系统不会上下文查找! 10 11 //子类的

第16 章 多线程

第16 章 多线程 16.1.1 线程和进程 所有运行中的任务通常对应一个进程(Process).当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个独立单位 一般而言,进程包含如下3个特征 1.独立性 :进程是系统中独立存在的实体,它拥有独立的资源,每一个进程都拥有自己私有的地址空间,没有经过进程本身运行的情况下,一个用户进程不可以访问其他进程的地址空间 2.动态性 :进程与程序的区别在于,程序只是一个静态指令集合,而

java学习笔记——韩顺平视频

第0讲:开山篇 1.  Java se J2se        桌面 Java ee J2ee        网络 Java me J2me        手机 2.  SQL server   Mysql   Oracle 3. 学习软件编程的注意事项 1.高效愉快学习 2.先建立一个整体框架然后细节 3.用什么再学习什么 4.先知道how,再知道why 5.软件编程是一门"做中学"学科,做了才会 6.适当囫囵吞枣 7.琢磨别人怎么做,不是我认为这么做 第1讲  内容介绍.项目演示.

常用响应式 Web UI 框架

1. Bootstrap Bootstrap是快速开发Web应用程序的前端工具包.它是一个CSS和HTML的集合,它使用了最新的浏览器技术,给你的Web开发提供了时尚的版式,表单,buttons,表格,网格系统等等.官方网站: http://twitter.github.com/bootstrap/github: https://github.com/twitter/bootstrap 2. Foundation Foundation 是一个易用.强大而且灵活的框架,用于构建基于任何设备上的 W

C#面向对象的基本概念 (Basic C# OOP Concept) 系列二

6.封装 封装就是对外部类隐藏成员或变量.我已经说过房子的保安仅仅被限制在房子的入口处,不需要知道屋内发生了什么.房主对保安隐藏了屋内所发生的任何事,以便更安全.隐藏和限制就被称为封装. 例如我们有两个类,一个是”Houseclass”另一个是”houseSecurityClass”. 我们可以看到所有的成员都包裹在公开的类houseSecurityClass里,所以Houseclass类的对象能够访问 houseSecurityClass里的任何成员.但是Houseclass有2个成员,一个p

Android中如何下载文件并显示下载进度

原文地址:http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1125/2057.html 这里主要讨论三种方式:AsyncTask.Service和使用DownloadManager. 一.使用AsyncTask并在进度对话框中显示下载进度 这种方式的优势是你可以在后台执行下载任务的同时,也可以更新UI(这里我们用progress bar来更新下载进度) 下面的代码是使用的例子 1 // declare the dialog as a