C++
行空扎记
这个作者很懒,什么都没留下…
展开
-
c++中,同个类的不同实例可以相互访问对方的私有、保护成员
c++中,同个类的不同实例可以相互访问对方的私有、保护成员 因为互相知道对方的细节,成员方法共享。原创 2017-03-19 16:59:38 · 1006 阅读 · 0 评论 -
继承情况下类的作用域
在继承情况下,派生类的作用域嵌套在基类作用域中。 因此,如果不能在派生类作用域中确定的名字,就在外围基类作用域中查找该名字的定义。 在基类和派生类中使用同一名字的成员函数,其行为与数据成员一样:在派生类作用域中派生类成员将屏蔽基类成员。即使函数原型不同,基类成员也会被屏蔽。如果要访问被屏蔽的基类成员,需要指定作用域。 #include class A { public:原创 2017-07-09 13:28:42 · 447 阅读 · 0 评论 -
重载函数的继承
在基类中重载的函数,派生类可以重定义所继承的0个或多个版本。如果派生类想通过自身类型使用的重载版本,则派生类必须要么重定义所有重载版本,要么一个也不重定义。但有时类需要仅仅重定义一个重载集中某些版本的行为,并且想继承其它版本的含义。这时,可以用using声明讲基类所有的重载实例加载到派生类中,派生类只需要重定义需要的版本。 #include class A { public: voi原创 2017-07-09 13:34:03 · 625 阅读 · 0 评论 -
函数重载与覆盖问题
区别:函数重载是函数在同个作用域中,函数原型不同;而函数覆盖则在不同作用域中,函数原型可以相同也可以不相同。 如果在当前的作用域中找到了名字,就不会向更大作用域查找,即使形参不匹配。 #include int get(int a) { return a; } int get() { return 0; } int main(void) { int get();原创 2017-07-09 13:30:52 · 369 阅读 · 0 评论 -
类的初始化顺序
初始化的顺序:先初始化基类,然后再根据声明次序初始化派生类的成员(先声明先初始化)原创 2017-07-09 13:28:00 · 249 阅读 · 0 评论 -
C++ 派生类到基类转换的可访问性(是否可以转换)
Public访问标号,可以使用派生类到基类的转换;protected、private访问标号,都不可以使用派生类到基类的转换。原创 2017-07-09 13:26:34 · 566 阅读 · 0 评论 -
c++ 零散重要知识点
c++ 零散重要知识点原创 2017-07-05 22:38:59 · 335 阅读 · 0 评论 -
c++ primer第四版 ”去除个别成员“问题
可被派生类访问的基类成员,都可以在派生类中的任何访问标号下用using声明; 对于派生类外部来说,被声明成员的访问权限由using声明所在的访问标号决定,与基类中的访问权限无关,也与派生列表中的访问标号无关。转载 2017-07-05 22:27:29 · 239 阅读 · 0 评论 -
c++ struct与class区别
有一种常见的误解认为用 struct 保留字定义的类与用 class 定义的类有更大的区别。原创 2017-07-05 22:22:50 · 261 阅读 · 0 评论 -
c++虚函数 默认参数
当基类和继承类中的虚函数同时有默认参数时,通过基类引用或指针调用虚函数,默认参数为基类的默认参数原创 2017-07-05 22:16:58 · 721 阅读 · 0 评论 -
理解 C++ 中继承层次的关键在于理解如何确定函数调用
理解 C++ 中继承层次的关键在于理解如何确定函数调用。确定函数调用遵循以下四个步骤: 1. 首先确定进行函数调用的对象、引用或指针的静态类型。 2. 在该类中查找函数,如果找不到,就在直接基类中查找,如此循着类的继承链往上找,直到找到该函数或者查找完最后一个类。如果不能在类或其相关基类中找到该名字,则调用是错误的。 3. 一旦找到了该名字,就进行常规类型检查(第 7.1.2 节),查看如果原创 2017-07-13 09:55:20 · 449 阅读 · 0 评论 -
类继承,虚函数返回值
当基类和派生类返回值为各自的指针或者引用时,但不可以为本身类类型 #include #include class A { public: virtual A&(A*) showSelf()=0; virtual A showSelf()=0;//error }; class B:public A { public: B&(B*) showSelf()原创 2017-07-13 09:52:19 · 1602 阅读 · 0 评论 -
模板编程中的typename作用
1、在模板形参列表中,表示类型说明符。 2、在模板函数体中显示声明正在使用的名字是一个类型。 template void fcn(T t) { T::size_type *p; } 在该模板函数中,size_type既可以是T的数据成员,又可以是T的类型成员,产生二义性,因此要显示用typename指示size_type为T的类型成员。 改正: template void fcn原创 2017-07-13 09:51:25 · 653 阅读 · 0 评论 -
北京时间零点取整问题
问题: 取当前北京时间零点整 错误处理: time_t now_timestamp = time(NULL); time_t zero_timestamp = now_time / 86400 * 86400; 原因: time(NULL)返回格林威治时间戳,没考虑北京时间时区问题 问题简单化,举个例子: 取格林威治时间(1970.0.0 23:0:0),对应北京时间为(1970.0.1 7:0...原创 2019-05-24 17:06:55 · 927 阅读 · 0 评论