多态,也叫动态绑定. Java: class A { public void f1() { System.out.println("A:f1"); } public void f2() { System.out.println("A:f2"); } }; class B extends A { public void f1() { System.out.println("B:f1"); } public void f3() { System.ou…
在构造函数中调用虚函数,并不会产生多态的效果,就跟普通函数一样. c++ primer 第四版中497页15.4.5构造函数和析构中的虚函数讲到,如果在构造函数或析构函数中调用虚函数,则运行的是为构造函数或析构函数自身类型定义的版本.另外,必须通过基类类型的引用或指针进行函数调用才会发生多态. 相关帖子:http://bbs.csdn.net/topics/390537893 //示例1 #include <iostream> using namespace std; class A { pr…
1 新类型 C++ 11新增了long long和unsigned long long,以支持64bit宽度: 新增char16_t和char32_t以支持16位和32位字符表示: 增加了“原始”字符串. 2 初始化 C++ 11扩展了大括号{}的适用范围,既可以用于基本类型,也可以用于自定义类型: int x = {5}; couble y{3.5}; short quar[5]{1, 2, 3, 4, 5}; int* p = new int[5]{1, 2, 3, 4, 5}; 创建对象时…
1.C++中类的不同存储区的对象的初始值 class test; class test { private: int i; int j; public: int geti() { return i; } int getj() { return j; } }; 1.在堆上创建对象时,成员变量初始值为随机值 test *p = new test; 2.在栈上创建对象时,成员变量初始值为随机值 test t; 3.在 全部变量:test t; 静态变量 static test t; 2.C++类中co…
1. c++在调用构造函数时,才会把最开始的虚表指针指向虚表. 2.在构造函数或者析构函数中调用虚函数. 编译上没有问题. 运行时,调用虚函数不会发生多态行为,会调用正在构造的类的虚函数. 详细可见c++中的说明: Member functions, including ). When a virtual function is called directly or indirectly from a constructor (including the mem-initializer or b…
一.static_cast static_cast,静态类型转换. 下面,我举几个例子,大家就能清楚了. int main(int argc, char const *argv[]) { char c = 'o'; int a = (int)c;//相当于把c的acsill码赋值给了a double d = 3.1231231; int b = (int)d; //上述两种转换都是C风格 //下面看看C++风格的类型转换 char c = 'o'; int a = static_cast<i…
upcast例: public class Test { public static void main(String[] args) { Cup aCup = new BrokenCup(); aCup.addWater(10); // method binding } } class Cup { public void addWater(int w) { this.water = this.water + w; } public void drinkWater(int w) { this.w…