继承 和static

转载 2015年07月10日 19:28:36

继承和多态

1。友元是不可以被继承的:基类的友元不可以访问派生类的成员;同样,一个友元的派生类也不可以访问定义友元的类。

2。除static成员外,每个派生类都保存了基类的一个副本,包括派生类不能访问的 private成员;static在整个继承层中只有一个,其访问属性跟其他成员一样。

3。虚函数在本质上是语义上的完备性表现:作为基类的成员却可以能被派生类重新定义;当然也正因为如此才有了多态。

4。派生类的声明不允许有继承列表。

5。继承是非自反的,也就是不能从自身继承。

6。Constructors and the copy-control members are not inherited,A class may initialize only its own immediate base class.

7。派生类如果自己定义了拷贝构造函数和赋值运算,则基类的部分不会自动激发,需要显示调用,如果派生类使用自定义的拷贝构造函数时没有显示调用基 类的拷贝构造函数,那么基类会使用自己的默认构造函数来对基类部分的成员赋值;而析构函数一直激发基类的析构函数,也就是说派生类没有必要对基类的成员进 行析构操作。
8。 一般不要override 非 virtual 成员函数,否则会产生二义性。(OOD)

9。一般不要overload virutal 函数因为virtual函数只有一个virtual参数表。 (OOD)

10。析构函数应该经常被定义为虚:我们使用一个基类的指针,显然是可以动态绑定的,如果在运行时指针指向基类的一个派生类,当使用这个指针析构派 生类时会发生什么呢?要析构首先要调用一个析构函数,根据多态的定义这个析构函数必须是基类基类部分的,因为虚函数不可以被继承,也因为我们需要对派生类 做自己的清楚操作,所以在基类中的这个析构函数必须是虚的,故必须在基类中定义虚析构函数。

static

1.关键字static,friend,explicit,virtual只能出现在类体中,inline即可以出现在类体内,也可以出现在类体外,只要有一个出现就是内联函数。

 (c++ primer)

A const static data member of integral type can be initialized within the class body as long as the initializer is a constant expression。

When a  const   static data member is initialized in the class body, the data member must still be defined outside the class definition。

When an initializer is provided inside the class, the definition of the member outside the class   must not specify an initial value。

 

非静态成员函数可以任意地访问静态成员函数和静态数据成员; 

 静态成员函数不能访问非静态成员函数和非静态数据成员.静态成员函数的参数没有this指针,也不可以是virtual函数。

说静态成员不能被继承,是因为子类跟父类共享一份静态成员,但子类使用正常方法仍然能够访问。

静态全局变量不能被其它文件所用;其它文件中可以定义相同名字的变量,不会发生冲突;

在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。其它文件中可以定义相同名字的函数,不会发生冲突。

C++变量作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。

相关文章推荐

继承与static精选例题

  • 2011年05月13日 21:26
  • 2KB
  • 下载

Spring 父类bean中的static属性值继承至子类bean中

最近遇到一个问题,在父类中用到一个属性,在子类运行父类方法的时候,如果给子类bean也注入该值,则该值会有多份,这样就没必要了,经人指导说是,在父类中,将这个值定义成static,子类不需注入也能获取...

java 继承 static 初始化过程分析

Java对象加载,初始化过程分析

C++中static变量与继承

1.   父类的static变量和函数在派生类中依然可用,但是受访问性控制(比如,父类的private域中的就不可访问),而且对static变量来说,派生类和父类中的static变量是共用空间的,这点...

java中继承static member与method

java中不能重写static member与method。参考java inhertance1.InheritanceA subclass inherits all the members (fie...

方法的重载与重写的关系(区别);static关键字;单例设计模式;继承;

方法的参数传递(值传递   引用传递)         基本数据类型:值传递:当参数类型为基本数据类型的时候  传递的是值 出了方法  原有值不改变 引用数据类型:引用传递:当参数类型为引用数据类...
  • KY1996
  • KY1996
  • 2017年07月19日 23:48
  • 174

java基础语法、继承与重载、super、static、finally、String与StringBuffer的深入理解

一、JAVA概述。1、Jame Gosling是JAVA之父;2、1991年5月23日JAVA诞生。二、JAVA语言特点:1、简单性,略去了多重继承,运算符重载,实现垃圾的自动回收;2、面向对象;3、...
  • suijing
  • suijing
  • 2011年01月03日 10:36
  • 1086

深入java static关键字 在继承场景中jvm类加载器对其进行的优化

上一篇文章我们说到了static关键字,可是本人觉得还不是很完整,现在补一篇文章举例说明static关键字对jvm类加载器的影响,这篇文章讲解了jvm对关键字static进行的优化。原创不易,转载请注...

QT类继承图(转自:http://blog.163.com/sxs_solo/blog/static/263333820086410169909/)

对于嵌入式设备几个关键对象: 屏幕 光标 键盘 QShared |---QGLayoutIterator | |---QLayoutArrayIterator | ...
  • lslxdx
  • lslxdx
  • 2012年02月02日 20:26
  • 1066

[J2SE基础篇]~类继承,static静态变量内存解析

最近在学习J2SE方面的内容的时候,我发现内存解析这部分的内容对于我们深度的理解代码的输入输出有很大的帮助,而且这部分的内容其实对于我们去理解设计模式也有很大的帮助,总而言之,这部分的基础知识对于我们...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:继承 和static
举报原因:
原因补充:

(最多只允许输入30个字)