-
当父类的指针指向子类的对象,此时父类的析构函数应该为虚析构函数,使得子类的析构函数得以调用。查看全部
-
私有成员继承后,在其共有继承类中不可见。。。————参考查看全部
-
intent:#Intent;S.K_1171477665=;end查看全部
-
http://img1.sycdn.imooc.com//55b0c5f7000123e112800720-120-68.jpg查看全部
-
实例化一个子类,先实例化父类,再实例化子类 析构一个子类,先析构子类,再析构父类查看全部
-
遇到一个小问题,在使用#include<string>时,需要配套使用using namespace std;才可正常使用string,否则会出错,也就是string类型应该是在std命名空间。以前一直仅把他当作#include<iostream>使用cout时的命名空间,现在想来应该是同名的命名空间。public Soldier : public Person<br> {<br> }<br> 注意只有一个':',不是两个. 使用string类型必须包含<string> 声明类的最后要加分号. undefined reference问题:一般是少了目标文件 g++ 编译时要加入所有相关的.o文件 include包含头文件时注意双引号“”和尖括号<>是不同的,编译器会搜索不同的路径 (1)尖括号<>是引用C++自身文件库里的头文件,如<iostream> (2)双引号“”则是引用用户自己编写的头文件,如“Person.h”
查看全部 -
A类有void ABC(),B类也有void ABC(),B类公有继承A类,基类中的ABC()成员函数就会被B类中的ABC()成员函数隐藏,隐藏的特性体现在:当实例化B的对象的时候,使用该对象只能够直接的访问到子类B中的ABC()成员函数,而无法访问父类中的ABC()成员函数 从语法的角度来说,同名的数据成员也具有隐藏的特征<br> 父子关系,成员同名,隐藏 对象调用同名的成员函数:直接soldier.play();调用的是自己的成员函数,如果要调用父类的成员函数,则需要加上父类的类名,soldier.Person::play()
查看全部 -
①通过public继承的都是被继承为派生类中所对应的访问属性(private例外),
如:基类public通过public继承为派生类中public;
基类protected通过public继承为派生类中protected‘
基类private通过public继承为无法访问。
②通过protected继承的都是被继承为派生类中的protected访问属性(private例外),
如:基类public通过通过protected继承为派生类中protected;
基类protected通过protected继承为派生类中protected;
基类private通过protected继承为无法访问。
③通过private继承的都是被继承为派生类中的protected访问属性(private例外),
如:基类public通过通过private继承为派生类中private;
基类protected通过private继承为派生类中private;
基类private通过private继承为无法访问。
查看全部 -
基类成员访问属性 继承方式 派生类成员访问属性
private成员 无法访问
protect成员 public protected
public成员 public
查看全部 -
子类可以给父类 赋值, 子类中多余的成员变量会被截断。
父类指针可以指向子类,但是也只能访问子类中被继承的部分。 子类指针无法指向父类。 子类是isa的关系,是父类的子集。
查看全部 -
//声明2个类 class Person { public: Person(); ~Person(); void eat(); string m_strName; int m_iAge; }; class Worker: public Person { public: Worker(); ~Worker(); void work(); int m_iSalary; }; //定义2个类 Person::Person() { cout<<"Person()"<<endl; } Person::~Person() { cout<<"~Person()"<<endl; } void eat() { cout<<"eat()"<<endl; } //定义worker类的函数 Worker::Worker() { cout<<"Worker()"<<endl; } Worker::~Worker() { cout<<"~Worker()"<<endl; } void work() { cout<<"work()"<<endl; } //应用 Worker *p = new Worker(); p->m_strName = "jim"; p->m_iAge = 10; p->eat(); p->m_iSalary =100; p->work(); delete p; p = NULL; //先调用Person,再Worker,析构相反
查看全部 -
子类和父类的重名函数无法形成重载,只能进行隐藏
查看全部 -
#include 后面是<>则从微软默认数据库里搜索
后面是""时则从本地文件夹下搜索
查看全部 -
子类重写父类的虚函数后,父类指针指向父类对象的话,通过这个父类指针调用的是父类中的虚函数;子类指针指向子类对象的话,通过这个子类指针调用的是子类的虚函数;父类指针指向子类对象的话,通过这个父类指针调用的是子类的虚函数。
查看全部 -
virtual当前出现的三种地方:虚析构函数:当父类指针指向子类对象时,释放内存时,若不定义virtual,则仅释放父类内存。虚继承:防止多继承和多重继承时,一个父类被继承多次,造成内存空间的浪费。虚函数:当父类指针指向子类对象时,父类指针可以指向子类方法。...
查看全部
举报