初始化列表

java static和final关键字

人盡茶涼 提交于 2019-11-30 14:56:30
static 用法 1.static 变量 static变量又称为静态变量,静态变量保存在方法区静态域中,一个类的静态变量被其所有实例共享。 2.static方法 静态方法不与包含它的任何对象关联,即使没有创建对象,也可使用,例: package cn.wangze.test; class Demo{ public static int i = 19; } public class staticDemo { private static Demo demo1 = new Demo(); private static Demo demo2 = new Demo(); public static void main(String[] args){ System.out.println(Demo.i); //19 System.out.println(demo1.i); //19 System.out.println(demo2.i); //19 demo1.i++; System.out.println(Demo.i); //20 System.out.println(demo1.i); //20 System.out.println(demo2.i); //20 Demo.i++; System.out.println(Demo.i); //21 System.out.println

构造函数与初始化列表

家住魔仙堡 提交于 2019-11-30 12:12:50
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 class stu 5 { 6 public: 7 stu() 8 { 9 puts("stu无参构造函数调用"); 10 } 11 12 stu(int age) 13 { 14 s_age = age; 15 puts("stu有参构造函数调用"); 16 } 17 18 stu(const stu &s) 19 { 20 //将传入的学生的所有属性全部拷贝到我身上 21 s_age = s.s_age; 22 puts("stu拷贝构造函数调用"); 23 } 24 ~stu() 25 { 26 puts("stu析构函数调用"); 27 } 28 int s_age; 29 }; 30 //调用 31 void test() 32 { 33 34 stu s2(10); //有参构造函数调用 35 stu s3(s2);//拷贝构造函数调用 36 cout << "s2 age is " << s2.s_age << endl; 37 cout << "s3 age is " << s3.s_age << endl; 38 } 39 40 void work(stu s) 41 { 42 43 } 44 void test01() 45 { 46 stu s; 47

C++类拷贝控制 深拷贝 浅拷贝

戏子无情 提交于 2019-11-30 10:38:43
普通类型对象之间的复制很简单,而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量,这篇文章将帮你理清C++类对象的拷贝方式 拷贝构造函数,拷贝赋值运算符 首先我们简单了解下默认的拷贝构造函数和拷贝赋值运算符 拷贝构造函数 第一个参数是自身类类型引用,其他参数都有默认值的构造函数就是拷贝构造函数 class Sales_data { public: Sales_data(); //默认构造函数 Sales_data(const Foo&); //默认拷贝构造函数 //... }; 拷贝构造函数用来初始化非引用类类型参数,所以 拷贝构造函数自己的参数必须是引用类型 (如果不是引用:为了调用拷贝构造函数,必须拷贝它的实参,为了拷贝实参,又需要调用拷贝构造函数,无限循环) 合成拷贝构造函数(默认) 和默认构造函数一样,编译器会帮你定义一个默认拷贝构造函数(如果你没有手动定义的话),不同的是,如果你定义了其他构造函数,编译器还是会给你合成一个拷贝构造函数 举个例子:Sales_data的合成拷贝构造函数等价于 class Sales_data { public: Sales_data(); Sales_data(const Sales_data&); private: std::string bookNo; int units_sold = 0; double

day11

五迷三道 提交于 2019-11-30 06:07:31
关键字:static 1,static可以用来修饰什么 成员:属性、方法、成员内部类、代码块 不能修饰最外面的类,也不能修饰任何构造器 2,用它修饰后有什么不同 (1)修饰属性 a,是该类所有对象共享的 b,static修饰的静态变量的值存储在”方法区”,实例变量存储在“堆”,局部变量在“栈”中 c,static修饰的属性,初始化的时机不同,在类初始化时初始化的,比创建对象要早,并且只初始化一次 注:实例变量每个对象是独立的,各自存储了一份;类变量,静态变量是一个类存储了一份,所有对象共享的 d,static修饰的属性,它的get/set也是static的 注:static方法中不可用this(类名.静态变量=值) (2)修饰方法 a,不用“对象.”就可调用,用“类名.”调用 b,static修饰的方法中,不能使用this.super关键字 c,static修饰的方法中,不能直接使用非静态的属性和方法 d,static修饰的方法,不能被重写,可以继承,静态方法,在编译时就确定 类的第四个成员:代码块 (1)作用:为属性初始化 非静态代码块:为非静态属性初始化,或者说辅助(对象)初始化 静态代码块:为静态属性初始化,或者说辅助类初始化 (2)语法格式: 【修饰符】class 类名{ { //非静态代码块 } static{ //静态代码块 } } (3)什么时候执行代码块 a

面向对象——成员

柔情痞子 提交于 2019-11-30 04:22:45
属 性 是什么 属 性:对应类中的成员变量 Field = 属性 = 成员变量, 语法格式: 修饰符 类型 属性名 = 初值 ; 说明 : 修饰符 private: 该属性只能由该类的方法访问。 修饰符 public: 该属性可以被该类以外的方法访问。 类型:任何基本类型,如 int 、 boolean 或任何类。 举例: public class Person{ private int age; // 声明 private 变量 age public String name = “Lila”; // 声明 public 变量 name } 成员变量 ( 或属性 ) vs 局部变量 1. 相同点: ① 声明的格式是相同的:数据类型 变量名 = 初始化值 ② 先声明,后使用 ③ 变量都有作用域。 2. 不同点: ① 类中声明的位置的不同。 成员变量:在类的一对 {} 内直接声明的变量 局部变量:方法内声明的,方法的形参位置声明的,构造器内声明的,代码块内声明的都是局部变量。 ② 成员变量可以在数据类型前声明权限修饰符,而局部变量是不可以声明权限修饰符的。 补充:权限修饰符有哪些? public 、 private 、 protected 、缺省 ③ 成员变量:声明时,有默认初始化值。也就是说,我们在定义成员变量时,可以不显式的赋值。 整型: byte 、 short 、 int 、

C++:Special Member Functions

天大地大妈咪最大 提交于 2019-11-30 02:53:48
Special Member Functions 区别于定义类的行为的普通成员函数,类内有一类特殊的成员函数,它们负责类的 构造 、 拷贝 、 移动 、 销毁 。 构造函数 构造函数控制对象的初始化过程,具体来说,就是初始化对象的数据成员。构造函数的名字与类名相同,且没有返回值。构造函数也可以有 重载 ,重载区别于参数数量或参数类型。与其他成员函数不同的是,构造函数不能被声明为 const ,对象的常量属性是在构造函数完成初始化之后获得的。 默认构造函数 默认构造函数的工作是:如果在类内定义了成员的初始值,那么用初始值初始化成员;否则,默认初始化成员。 默认初始化是指定义变量时不赋予初始值时被赋予默认值的动作。定义于函数体外的内置类型如果没有被显式初始化,则赋值0;在函数体内定义的变量不会被初始化。 class LiF { public: LiF(int _lif = 0) { lif = _lif; } // 指定了lif的初值,这是一个默认构造函数 private: int lif; } LiF l; // 调用默认构造函数,此时l.lif值为0 再看下面这种情况: class LiF1 { public: LiF1(int _lif = 0) { lif = _lif; } int lif; }; class LiF2 { public: LiF1 lif1; }; LiF2

c/c++常见面试题(一)

佐手、 提交于 2019-11-29 21:39:57
0.static、const、volatile的作用和区别 static: https://www.cnblogs.com/Manual-Linux/p/8870038.html 第一 、在修饰变量的时候,static修饰的静态局部变量只执行一次,之后再初始化无效。而且延长了局部变量的生命周期,直到程序运行结束以后才释放。 第二 、static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。 第三 、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0 const: 1.修饰的变量只读,不可改变 2.防止意外修改,减少bug 3.可以节省空间,避免不必要的 内存分配 volatile: 告诉编译器这个变量随时可变,不需要优化 1.请问全局变量和局部变量能否重名 能,局部会屏蔽全局。要用全局变量,需要使用"::" 2. 用三目运算符(X)>(Y)?(X):(Y)宏定义实现比较两个数的大小 #define MAX(X, Y) ((X)>(Y)?(X):(Y)) 3.malloc的了解 malloc是动态内存分配,是用户动态申请系统分配指定字节的内存块的函数。返回类型是 void* 类型 对应free,

FFMPEG - ffplay源代码分析

[亡魂溺海] 提交于 2019-11-29 18:19:27
FFmpeg是一个开源,免费,跨平台的视频和音频流方案,它提供了一套完整的录制、转换以及流化音视频的解决方案。而ffplay是有ffmpeg官方提供的一个基于ffmpeg的简单播放器。学习ffplay对于播放器流程、ffmpeg的调用等等是一个非常好的例子。 1.例子 这里的说明使用如下的例子: ./ffplay avm.mp4 2. read_thread() 线程read_thread负责demux,它的流程如下图: avformat_alloc_context分配AVFormatContext。这是demux的上下文; avformat_open_input()解析文件,确定文件的封装格式(即mux类型); aformat_find_stream_info()继续解析AVFormatContext中包含的stream,根据stream类型确定其decoder,并创建AVCodecContext,这是decode的上下文; 如果指定了播放位置,avformat_seek_file()将播放位置移动到指定位置; av_find_best_stream()查找指定stream类型的最佳质量的stream。 stream_component_open()创建新的线程video_thread。Video_thread负责decode。 最后,read_thread在循环中,调用av

3.android QMI机制---Qcril初始化流程

白昼怎懂夜的黑 提交于 2019-11-29 17:55:01
原文: https://blog.csdn.net/u012439416/article/details/74276701 3, Qcril初始化流程 rild守护进程的rild.c文件中main方法有关加载动态库代码如下, 3.1 消息初始化 初始化:qmi_modem_taskàqmii_init()àqmux_init()。qmux_init方法完成对控制通道的初始化后, 通过函数qmuxi_process_rx_sig方法开始从共享内存接收数据。调用流程如如下, dlHandle = dlopen(rilLibPath, RTLD_NOW);//加载库 。。。。 funcs = rilInit(&s_rilEnv, argc, rilArgv);//初始化 实际调用的是RIL_Init方法 s_rilEnv结构体定义如下,也就是qcril.c可以回调ril的方法 static struct RIL_Env s_rilEnv = { RIL_onRequestComplete, RIL_onUnsolicitedResponse, RIL_requestTimedCallback }; A ndroid平台不同厂商的AP侧可以相同,但是Modem侧肯定会有很大的差异,RIL层要解决一个问题 就是适配不同厂商的Modem,为了达到兼容性要求

Java基础知识总结

我们两清 提交于 2019-11-29 17:15:43
本博文内容参考相关博客以及《Java编程思想》整理而成,如有侵权,请联系博主。 转载请注明出处: http://www.cnblogs.com/BYRans/ PDF版下载链接: 《Java基础知识总结》 。 如果您想在此基础上做一些修改,请联系dingyu.sdu@gmail.com,我把word原版发给您。 一:java概述: 1,JDK:Java Development Kit, java的开发和运行环境,java的开发工具和jre。 2,JRE:Java Runtime Environment, java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。 3,配置环境变量: 让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 环境变量的配置: 1 ): 永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin 2 ): 临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。 classpath的配置: 1 ): 永久配置方式:classpath=.;c:\;e:\ 2 ):