摘要: const的含义 如果在基类中添加了虚函数,则如果基类指针指向了派生类,此时基类的指针为动态类型与所指向的派生类类型有关。 如果在基类中添加了虚函数,则如果基类指针指向了派生类,此时基类的指针为动态类型与所指向的派生类类型有关。 阅读全文
posted @ 2019-03-02 18:42 niudong 阅读(1026) 评论(0) 推荐(0) 编辑
摘要: C++中函数重载使用顶层const修饰参数和不使用const修饰参数效果是一样的,如果定义了这样的重载函数会报函数重定义的错误。 追其原因,C++中的函数传递方式有三种,一种是值传递,就是拷贝,一种是指针传递,在C++中进行了更高层次的抽象,因此一般建议不要使用,第三种就是引用传递。 对于值传递而言 阅读全文
posted @ 2017-11-23 12:12 niudong 阅读(1017) 评论(0) 推荐(0) 编辑
摘要: static_cast 静态类型转换。 在编译的时候C++编译器会做类型检查,基本类型能转换,指针类型不进行转换。 C语言中隐式类型转换的地方均可以使用static_cast。 reinterpreter_cast 重新解释类型 若不同类型之间,进行强制类型转换,用reinterpret_cast< 阅读全文
posted @ 2017-11-16 10:40 niudong 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 函数模版和同名普通函数在同一个作用域中,会优先调用那个函数? 函数模型在进行调用的时候会进行严格的类型匹配,而普通函数在调用的时候,会进行函数参数类型转换(前提是自动类型转换)。 调用函数模版,本质是类型参数化,将要严格的按照类型进行匹配,不会进行自动类型转换 调用普通函数,可以进行隐式的数据类型转 阅读全文
posted @ 2017-11-15 13:34 niudong 阅读(1342) 评论(0) 推荐(0) 编辑
摘要: C++中没有java中接口的概念,但是可以使用抽象类来模拟java中的接口。 工程上的多继承 工程开发中的多继承几乎是不被使用的 多继承带来的代码的复杂性,远远大于其代码带来的便利性。 多继承对代码的维护产生灾难性的后果 在设计上,任何有多继承的地方,都可以用单继承来代替 C++支持多继承,多继承有 阅读全文
posted @ 2017-11-14 18:25 niudong 阅读(1318) 评论(0) 推荐(0) 编辑
摘要: C++中多态的实现原理 当类中声明虚函数时,编译器会在类中生成一个虚函数表 虚函数表是一个存储类成员函数指针的数据结构 虚函数表是由编译器自动生成与维护的 virtual成员函数会被编译器放入虚函数表中 存在虚函数时,每个对象中都有一个指向虚函数表的指针(vptr指针) C++内存模型中,会将对象中 阅读全文
posted @ 2017-11-13 17:38 niudong 阅读(175) 评论(0) 推荐(0) 编辑
摘要: C++中允许多继承,因此会出现同时继承多个父类变量的情况,也就是说,正常的继承是一棵树,而多继承的二义性使得继承成为了一个图。在C++中通过virtual关键字,来防止这种情况的发生。问题的本质在于,对于父类中的变量,有多种不同的形式来进行访问父类中的变量,解决问题的办法是在出现问题的类上,加一个v 阅读全文
posted @ 2017-11-13 13:12 niudong 阅读(926) 评论(0) 推荐(0) 编辑
摘要: 在C++中进行操作符重载的时候,前置++返回的是一个引用。 这就设计到了对于基本变量进行前置操作时候的理解了。 例如,对于int类型变量,在进行前置++的时候,是会将i进行加1,然后返回i的引用。而i++是先创建一个i的副本,然后在对i进行加1,最后返回i的副本的值(注意这里是值而不是引用)。 通常 阅读全文
posted @ 2017-11-12 12:05 niudong 阅读(1809) 评论(0) 推荐(0) 编辑
摘要: C++编译器提供的初始化方案: 构造函数的调用方法是自动调用,也就是隐式调用,按照规则进行调用,也就是按照类名.类名()这种方式调用。 可以通过构造函数显示的初始化类的属性 类没有写构造函数,C++编译器会自动生成一个默认的构造函数。 如果都设置成为显示初始化,那么当你定义一个对象数组的时候,是没有 阅读全文
posted @ 2017-11-11 19:02 niudong 阅读(1415) 评论(0) 推荐(0) 编辑
摘要: C++编译器对Struct做了功能增强,因此,可以实现和class一样的作用,不同的是,在class中定义的属性或者是方法,在没有加修饰符的情况下使用的是private,而在struct中使用的修饰符是public,这就是区别。 C++中类对象的初始化和类对象的赋值是两个不同的概念。 阅读全文
posted @ 2017-11-10 19:57 niudong 阅读(138) 评论(0) 推荐(0) 编辑