C++第八天笔记2016年02月25日(周四)A.M

1.    继承:一个类A可以继承另一个类B,那么我们称类B为基类(父类),类A为派生类 (子类)。

2.    派生类从基类继承了所有成员,除了构造函数、析构函数、=函数。

3.    基类的私有成员,虽然它们也是派生类的私有成员,但是不能在派生类中定义的成员函数访问。这些基类的私有成员只能通过基类的公有成员函数访问。

4.    子类可以自己实现与父类成员函数原型相同(函数名、参数列表)的成员函数,称为覆盖。覆盖是函数重载的特例,覆盖一定是发生在继承的过程中。

在子类中调用被覆盖的父类版本的函数时,在函数名前加Base:: (基类类名base)比如Point::

5.    派生类中的构造函数

6.    protected:

被protected修饰的成员只能在当前类以及其派生类中直接访问,其它类或者函数依旧不可见。

附源码:

 1 #include <iostream>
 2
 3 using namespace std;
 4 class Base{
 5 public:
 6     Base(int i):b_number(i){}
 7     int get_number()const{return b_number;}
 8     void print(){
 9         cout<<b_number<<endl;
10     }
11 //private:
12 protected:
13     int b_number;
14 };
15 class Derived:public Base{
16 public:
17     Derived(int i,int j):Base(i),d_number(j){}
18     void print(){
19 //        cout<<get_number()<<" ";
20         cout<<b_number<<" ";
21         cout<<d_number<<endl;
22     }
23 private:
24     int d_number;
25 };
26 int main(int argc, const char * argv[]) {
27     Base a(2);
28     Derived b(3,4);
29     cout<<"a is ";
30     a.print();
31     cout<<"b is ";
32     b.print();
33     cout<<"base part of b is ";
34     b.Base::print();
35     return 0;
36 }
时间: 2024-10-12 21:09:54

C++第八天笔记2016年02月25日(周四)A.M的相关文章

C++第七天笔记2016年02月24日(周三)A.M

1.    拷贝构造函数:也是构造函数. 2.    拷贝构造的作用: (1). 用一个已经存在的对象创建并初始化新对象. 1 object=another_object; //赋值重载 2 Person object=another_object; //拷贝构造函数. 3 Person object(another_object); //开辟堆空间 1 Person obj; 2 Person* p=new Person(obj); //编辑器会调用拷贝构造函数. delete p; 3. 

C++第六天笔记2016年02月23日(周二)A.M

1.    赋值运算符的重载: 什么情况下需要赋值运算符的重载? 当类中有指向对空间的指针变量时,需要重载赋值运算符以实现深拷贝. 浅拷贝问题: 当类中有指向对空间的指针变量时,前拷贝有可能会导致二次删除或内存泄露问题. 重载赋值操作符分5步:a=a; 1.1  判断是否为自赋值à自赋值则直接跳至第5步. 1.2  删除旧的堆空间(指针指向的旧的堆空间) 1.3  申请新的堆空间 1.4  内容拷贝 1.5  return* this; 浅拷贝: 1 #include <iostream> 2

C++第五天笔记2016年02月22日(周一)P.M

1.    输出运算符重载: 1 #include <iostream> 2 #include"cstring" 3 4 using namespace std; 5 6 class Complex 7 { 8 public: 9 Complex(int r=0,int i=0):_r(r),_i(i){} 10 void print(); 11 friend ostream& operator<<(ostream& out,const Comp

C++第七天笔记2016年02月24日(周三)P.M

1.    哪些构造函数支持做类型转换? 传递一个参数就可以被调用的构造函数. 2.    不同函数调用时间分析源码: 1 #include <iostream> 2 using namespace std; 3 4 class Demo{ 5 public: 6 Demo(int n=0):i(n){cout<<"默认构造函数被调用"<<endl;} 7 Demo(const Demo& a) 8 { 9 i=a.i; 10 cout<

C++第十天笔记2016年02月29日(周一)A.M

1.把子类对象作为父类对象使用: 1.1  前提:继承方式必须公有. 1.2 将子类对象用作父类对象. 1.2.1 将子类对象赋值给父类对象. 1.2.2 将父类引用指向子类对象.(即用派生类对象初始化基类引用) 1 #include <iostream> 2 using namespace std; 3 4 class Base{ 5 public: 6 Base(){} 7 Base(int b):_b(b){} 8 void func(){cout<<"b:&quo

C语言第八天笔记2016年01月22日(周五)A.M

1. 作用域: 静态全局变量与普通全局变量:前者的作用域缩小,生命周期相同. 静态局部变量与普通局部变量:前者的生命周期延长,作用域相同. 2. 函数指针: int (*func_ptr)(int,float*);//声明函数指针. int exchange(int,float*); exchange(1,p); func_ptr(1,p); 3. 数组指针.指针数组 指针数组:char* s[10]; int* a[10];(数组,数组中的元素都是指针类型). 数组指针: int* p;//整

OC第八天笔记2016年03月23日(周三)A.M

1.     NSFileManager: ----------------------main--------------------------- 1 <font size="3">#import <Foundation/Foundation.h> 2 #import "Student.h" 3 int main(int argc, const char * argv[]) { 4 @autoreleasepool { 5 6 //1.

C语言第九天笔记2016年01月25日(周一)P.M

1. 结构体 成员如果是char* name;能否使用gets.scanf.strcpy取决于name是否“指向”一块可以盛放字符串的空间,成员是数组,数组名不可以做左值. COMPUTER* p; p=&c; p->brandó(*p).brand .成员访问运算符 //结构体变量名.成员:c.brand; ->指向运算符:指针变量名->成员; //访问指针所“指向”的结构体变量的成员 2. 宏定义 基本格式:#define 宏的名字 宏替换内容 3. 预处理命令 #if 0

2016年3月25日作业

软考信息系统监理师,2016年3月25日作业 一.进度控制 1.进度控制分为哪四个步骤? 答:计划(Plan).执行(Do).检查(Check).行动(Action) 2.进度计划编制的目的是什么?哪个最重要? 答: 1)  保证暂时获利以补偿已经发生的费用支出 2)  协调资源 3)  使资源被需要时可以利用 4)  预测在不同时间上所需的资金和资源的级别一遍赋予项目不同的优先级 5)  项目进度的正常进行 最重要的是第一个. 3.判断:计划实施阶段是进度控制的核心,是否正确? 答:是 4.