派生类

c++知识点总结3

强颜欢笑 提交于 2019-11-26 17:30:27
http://akaedu.github.io/book/ week1 引用 :相当于变量的别名。下面r和n就相当于同一回事 int n=4; int &r=n; 引用做函数参数: void swap(int &a, int &b){ //a等价于n1, b等价于n2 int tmp; tmp=a; a=b; b=tmp; } int n1, n2; swap(n1, n2); const int &r=n; //不能通过常引用r来修改n的内容。 const const int MAXAL=23; const char* NAME="pentium"; int n; const int* p=&n; //不能通过常量指针p来修改n的内容int* q=p; //不能将常量指针赋给非常量指针,反之可以 void func(const char* p){ .... 不能提供常量指针p修改内容 } 动态内存分配 int *pn=new int; *pn=555; //动态分配出sizeof(int)这么大的内存,并将其起始地址返回给pn int *pm=new int[6]; pm[5]=666; //动态分配数组//new出来的对象必须手动delete。否则即使运行结束了系统也不会自行销毁 delete pn; delete[] pm; inline:内联函数

面向对象:类的成员

血红的双手。 提交于 2019-11-26 14:23:59
一. 细分类的组成成员 区域划分: class A: company_name = 'a' # 静态变量(静态字段) __iphone = '1353333xxxx' # 私有静态变量(私有静态字段) def __init__(self,name,age): #特殊方法 self.name = name #对象属性(普通字段) self.__age = age # 私有对象属性(私有普通字段) def func1(self): # 普通方法 pass def __func(self): #私有方法 print(666) @classmethod # 类方法 def class_func(cls): """ 定义类方法,至少有一个cls参数 """ print('类方法') @staticmethod #静态方法 def static_func(): """ 定义静态方法 ,无默认参数""" print('静态方法') @property # 属性 def prop(self): pass 二. 类的私有成员 对于每一个类的成员而言都有两种形式: 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法 私有成员和公有成员的访问限制不同 : 静态字段(静态属性) 公有静态字段:类可以访问;类内部可以访问;派生类中可以访问 私有静态字段:仅类内部可以访问; class C:

CLion报错解决:allocating an object of abstract class type--unimplemented pure virtual method

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-26 13:59:33
在用CLion写代码时遇到了这个报错: allocating an object of abstract class type '...' unimplemented pure virtual method '...' in '...' 这个报错的意思是派生类有没有实现的虚函数,所以是抽象类。 我感觉这个报错有问题,因为我的派生类已经实现了父类的虚函数。 然后我想到一件事:在函数后加上关键字 override 表示重载。 在加上关键字 override 后,clion报错了。 我仔细观察,发现是因为参数中没有 & !!! 来源: https://blog.csdn.net/zhangpeterx/article/details/98881520

面向对象之:类的成员

坚强是说给别人听的谎言 提交于 2019-11-26 13:06:37
1.类的私有成员公有成员 # 类的私有成员: 私有类的静态属性, 私有类的方法, 私有对象的属性 对于每一个类的成员而言都有两种形式: 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法 私有成员和公有成员的访问限制不同 : 1.1静态字段(静态属性) 公有静态字段:类可以访问;类内部可以访问;派生类中可以访问 私有静态字段:仅类内部可以访问 公有静态属性(字段) class C: name = "公有静态字段" def func(self): print C.name class D(C): def show(self): print C.name C.name # 类访问 obj = C() obj.func() # 类内部可以访问 obj_son = D() obj_son.show() # 派生类中可以访问 # 公有静态字段 私有静态属性(字段) class C: __name = "私有静态字段" def func(self): print C.__name class D(C): def show(self): print C.__name C.__name # 不可在外部访问 obj = C() obj.__name # 不可在外部访问 obj.func() # 类内部可以访问 obj_son = D() obj_son.show()

Effective C++ 学习笔记 《七》

…衆ロ難τιáo~ 提交于 2019-11-26 06:05:49
Item 7: Declare destructors virtual in polymorphic base classes 看这个标题需要注意两个地方,第一个是 多态基类polymorphic base classes 另一个是 虚析构函数destructors virtual 。作者建议我们在写为了实现多态的基类的时候,把这个基类的析构函数设为虚函数。 作者给出了一个计时器的基类作为例子,这个计时器可以有多个子类从而实现多态,当我们 动态分配内存 实现一个类的对象的时候,需要在程序结束的时候释放对象的内存。而对于一个继承自基类的派生类,如果基类的析构函数没有设为Virtual,意味着派生类对象在被析构的时候 只会调用基类的析构函数 ,这种行为是未定义的,因为派生类对象只会释放基类中的成员部分,而对于派生类的成分很可能没有销毁,造成资源泄露。 那么是不是对于所有的类,析构函数都写为virtual呢?比如对于一个没有任何virtual类型函数的类,那这种类往往是不会用于被继承的,它的析构函数是否也写成virtual呢? 书上接着举到了一个例子,是一个二维的空间点类 class Point { // a 2D point public: Point(int xCoord, int yCoord); ~Point(); private: int x, y; }; 对于这个类

面向对象:类的成员

会有一股神秘感。 提交于 2019-11-26 02:57:45
一. 细分类的组成成员 之前咱们讲过类大致分两块区域,如下图所示: 每个区域详细划分又可以分为: class A: company_name = '老男孩教育' # 静态变量(静态字段) __iphone = '1353333xxxx' # 私有静态变量(私有静态字段) def __init__(self,name,age): #特殊方法 self.name = name #对象属性(普通字段) self.__age = age # 私有对象属性(私有普通字段) def func1(self): # 普通方法 pass def __func(self): #私有方法 print(666) @classmethod # 类方法 def class_func(cls): """ 定义类方法,至少有一个cls参数 """ print('类方法') @staticmethod #静态方法 def static_func(): """ 定义静态方法 ,无默认参数""" print('静态方法') @property # 属性 def prop(self): pass 二. 类的私有成员 对于每一个类的成员而言都有两种形式: 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法 私有成员和公有成员的访问限制不同 : 静态字段(静态属性) 公有静态字段:类可以访问;类内部可以访问

面向对象 类的成员

北城余情 提交于 2019-11-26 01:09:35
一. 细分类的组成成员 之前咱们讲过类大致分两块区域,如下图所示: 每个区域详细划分又可以分为: class A: company_name = '老男孩教育' # 静态变量(静态字段) __iphone = '1353333xxxx' # 私有静态变量(私有静态字段) def __init__(self,name,age): #特殊方法 self.name = name #对象属性(普通字段) self.__age = age # 私有对象属性(私有普通字段) def func1(self): # 普通方法 pass def __func(self): #私有方法 print(666) @classmethod # 类方法 def class_func(cls): """ 定义类方法,至少有一个cls参数 """ print('类方法') @staticmethod #静态方法 def static_func(): """ 定义静态方法 ,无默认参数""" print('静态方法') @property # 属性 def prop(self): pass 二. 类的私有成员 对于每一个类的成员而言都有两种形式: 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法 私有成员和公有成员的访问限制不同 : 静态字段(静态属性) 公有静态字段:类可以访问;类内部可以访问

C++应用程序性能优化(三)——C++语言特性性能分析

半世苍凉 提交于 2019-11-25 21:08:27
C++应用程序性能优化(三)——C++语言特性性能分析 一、C++语言特性性能分析简介 通常大多数开发人员认为,汇编语言和C语言比较适合编写对性能要求非常高的程序,C++语言主要适用于编写复杂度非常高但性能要求并不是很高的程序。因为大多数开发人员认为,C++语言设计时因为考虑到支持多种编程模式(如面向对象编程和范型编程)以及异常处理等,从而引入了太多新的语言特性。新的语言特性往往使得C++编译器在编译程序时插入了很多额外的代码,会导致最终生成的二进制代码体积膨胀,而且执行速度下降。 但事实并非如此,通常一个程序的速度在框架设计完成时大致已经确定,而并非因为采用C++语言才导致速度没有达到预期目标。因此,当一个程序的性能需要提高时,首先需要做的是用性能检测工具对其运行的时间分布进行一个准确的测量,找出关键路径和真正的性能瓶颈所在,然后针对性能瓶颈进行分析和优化,而不是主观地将性能问题归咎于程序所采用的语言。工程实践表明,如果框架设计不做修改,即使使用C语言或汇编语言重新改写,也并不能保证提高总体性能。 因此,遇到性能问题时,首先应检查和反思程序的总体架构,然后使用性能检测工具对其实际运行做准确的测量,再针对性能瓶颈进行分析和优化。 但C++语言中确实有一些操作、特性比其它因素更容易成为程序的性能瓶颈,常见因素如下: (1)缺页 缺页通常意味着要访问外部存储