码迷,mamicode.com
首页 > 编程语言 > 详细

网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态

时间:2016-10-01 21:43:19      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

 

第01节:继承

 

回顾

面向对象的4个特点:

A(抽象) P(多态)I(继承)E(封装)

前两个单元:AE

本单元: PI

 

第02节:构造函数和析构函数

 

派生类继承的成员

派生类继承 ctor 和 dtor 吗?

派生类不继承的特殊函数

构造函数 (C++11已允许继承)

析构函数

作为特权地位的友元函数

赋值运算符函数

 

#include <iostream>

struct A
{
	A(int i)
	{

	}
	A(double d, int i)
	{

	}
	// ...
};

struct B : A
{
	using A::A; // 继承基类构造函数
	int d{ 0 }; // 新的变量初始化方法
};

int main()
{
	B b(1); // b.d 初始化为 0
}

 

Calling Base Class Constructors ( 调用基类构造函数)

Ctors of base class can only be invoked from the constructors of the derived classes. ( 基类构造函数只能由派生类构造函数调用)

The syntax to invoke it is as follows:

 

DerivedClass(parameterList) : BaseClass()
{
	// Perform initialization
}
// Or

DerivedClass(parameterList) : BaseClass(argumentList)
{
	// Perform initialization
}

 

No-Arg Constructor in Base Class( 基类的无参构造函数)

Rules for invoke constructors in derived class

A constructor in a derived class must always invoke a constructor in its base class. (派 生类构造函数必须调用基类构造函数)

 

If a base constructor is not invoked explicitly, the base class’s no-arg constructor is invoked by default. ( 若基类ctor未被显式调用,基类的无参构造函数就会被调用)

 

Constructor and Destructor Chaining ( 构造和析构函数链)

constructor chaining (构造函数链)

Constructing an instance of a class invokes all the base class along the inheritance chain. ( 构造类实例会沿着 继承链调用所有的基类ctor)

Invoke sequence: base first, derive next

 

destructor chaining (析构函数链)

Conversely, the destructors are automatically invoked in reverse order(dtor 与ctor正好相反)

Invoke sequence: derive first, base next

 

no-arg constructor ( 无参构造函数)

If a class is designed to be extended, provide a no-arg constructor. (若你的类 想被别人扩展,那么就提供一个无参构造函数)

 

34. 文件扩展名:头文件用.h,源文件用 .cpp (c++, cc也可)

 

35. A class should be declared in a header file and defined in a source file where the name of the files match the name of the class.

35. 类应该在头文件中声明并在源文件中定义,俩文件名字应 该与类名相同

例如:MyClass.h, MyClass.c++

例外的是,模板类的声明和定义都要放在头文件中

 

49. Class variables should never be declared public.

49. 类成员变量不可被声明为public

说明:公有变量违背了C++的信息隐藏原则。例外的是, 如果class只是一个数据结构,类似C语言中的struct,则 可将类变量声明为公有

 

#include <iostream>

class Fruit
{
public:
	Fruit()
	{

	}
	Fruit(int id)
	{

	}
	std::string s;
};

class Apple : public Fruit
{
public:
	Apple() :Fruit()
	{

	}
};

int main()
{
	Apple apple;
}

 

第03节:函数重定义

第04节:多态和虚函数

第05节:访问控制 (可见性控制)

第06节:抽象类与纯虚函数

第07节:动态类型转换

第6单元作业【2】- 在线编程(难度:中)提交截止时间:2016年10月7日 23:30 / 待定提交阶段

第6单元作业【1】-在线编程(难度:易)提交截止时间:2016年10月7日 23:30 / 待定提交阶段

网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态

标签:

原文地址:http://www.cnblogs.com/denggelin/p/5926279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!