-
private继承方式
查看全部 -
protected保护继承的继承方式。
查看全部 -
继承方式图
查看全部 -
析构函数的执行和构造函数的执行是逆序的。
查看全部 -
数据冗余的问题---->虚继承
查看全部 -
多重继承:一个基类派生出一个类,再用派生出的这个类作为基类,派生下一个派生类,依次往下
多继承:一个派生类继承自多个基类
查看全部 -
隐藏情况下使用父类的同名成员函数:
查看全部 -
覆盖和隐藏
隐藏:子类中有一个和父类同名的数据成员或者成员函数,那么父类中的这个数据成员或者成员函数将会被隐藏。
这里说被隐藏,即可以通过一定的方式访问到。
查看全部 -
实例化的时候先实例化基类,再实例化派生类
销毁对象的时候先销毁子类,再销毁父类
查看全部 -
呵呵哒查看全部
-
在text1()中传参,临时变量会调用拷贝构造函数
查看全部 -
当出现重定义的问题(菱形继承),用宏定义可以解决
查看全部 -
多重承的子类定义构造函数时用初始化列表将参数传给父类的构造函数
查看全部 -
使用对象作为函数的参数时会先用传入的对象拷贝构造一个临时对象出来,在调用完函数后调用类的析构函数将临时对象销毁
查看全部 -
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;/**
* 定义工人类: Worker
* 数据成员: m_strName
* 成员函数: work()
*/
class Worker
{
public:
Worker(string name)
{
m_strName = name;
cout << "Worker" << endl;
}
~Worker()
{
cout << "~Worker" << endl;
}
void work()
{
cout << m_strName << endl;
cout << "work" << endl;
}
protected:
string m_strName;
};/**
* 定义儿童类: Children
* 数据成员: m_iAge
* 成员函数: play()
*/
class Children
{
public:
Children(int age)
{
m_iAge = age;
cout << "Children" << endl;
}
~Children()
{
cout << "~Children" << endl;
}
void play()
{
cout << m_iAge << endl;
cout << "play" << endl;
}
protected:
int m_iAge;
};/**
* 定义童工类: ChildLabourer
* 公有继承工人类和儿童类
*/
class ChildLabourer :public Worker,public Children
{
public:
ChildLabourer(string name, int age):Worker(name),Children(age)
{
cout << "ChildLabourer" << endl;
}~ChildLabourer()
{
cout << "~ChildLabourer" << endl;
}
};int main(void)
{
// 使用new关键字创建童工类对象
ChildLabourer *p = new ChildLabourer("xiaohu",12);
// 通过童工对象调用父类的work()和play()方法
p->work();
p->play();
// 释放
delete p;
p = NULL;return 0;
}查看全部
举报