初始化

第一篇博客 C+++知识点总结一

眉间皱痕 提交于 2020-03-12 11:58:32
1.成员 1.比较特殊的成员类型:protected. 保护成员在本类中和private类型的成员作用一模一样。区别在于保护成员可以由本类的派生类的成员函数访问,但是私有成员在其派生类中无法访问。 2.成员函数的定义 成员函数如果在类外定义,那么函数声明的参数表可以只写参数类型,但是在类外定义时必须给出参数名。 3.内联成员函数 (1)隐式定义内联成员函数 直接在类内定义的成员函数 (2)显式定义内联成员函数 用关键字inline声明(在声明和定义的语句句子开头加inline),此时可以在类内声明,类外定义。声明、定义都要在句首加inline. (3)内联函数 内联函数的代码会在编译时插入到每一个调用它的地方。这种做法会提高运行效率。但是只有很简短的代码才实用。 2.对象(成员访问,初始化方式) 1.对象成员的访问方式: 例如对对象d中成员year的访问 d.year (*p).year p->year 2.对象的初始化 (1) class complex { public: double real; //数据成员是public时才能使用这种方法 double imag; }; complex c={1.1,2.2}; (2)用构造函数(作用:为对象分配空间,进行初始化) 例如: ... class complex { public: complex(int a,int b)

go语言之变量

不问归期 提交于 2020-03-12 11:51:14
在go语言中,声明一个变量格式如下: var varname vartype varname 表示变量名,vartype表示变量的类型。 例如,下面的代码中创建了两个变量。 var i1 int var s1 string fmt . Printf ( "%d %q \n" , i1 , s1 ) // 0 "" 上面的代码中,创建了两个变量i1 和 s1 ,并且还没有初始化。 在go语言当中,一个变量创建后但是如果没有初始化,那么就会默认的为当前变量类型的零值。例如i1的类型为int,打印出来的结果为int类型的零值0,s1的类型为string,打印出来的结果为string类型的零值""。 我们可以在变量声明的时候进行初始化,如下: var i1 int = 3 var s1 string = "hello" fmt . Println ( i1 , s1 ) // 3 hello 上述的代码不仅仅创建了变量,还对变量进行了初始化的设置。 在go语言当中是支持同时创建多个变量并且同时赋值,如下: var i1 , i2 int = 3 , 4 fmt . Println ( i1 , i2 ) // 3 4 上述变量在创建的初期就同时完成了初始化的设置。 在go中,允许在声明变量的时候不去设置类型,如下: var i1 , s1 = 3 , "hello,world" fmt .

【深度探索C++对象模型读书笔记】【第5章】构造、析构、拷贝语意学

痞子三分冷 提交于 2020-03-12 11:03:23
1、 一般而言,class的data member应该被初始化,而且只在constructor中或其它member functions中初始化,其它任何操作都将破坏其封装性质,使其维护和修改更加困难。 2、 可以定义并调用一个pure virtualfunction,但它只能被静态调用,不能经由虚拟机制调用。 3、 class设计者一定得定义pure virtual destructor,因为每一个derived class destructor会被编译器加以扩张,静态调用每一个virtualbase class以及上一层base class的destructor。只要缺乏任何一个base class destructors的定义,就会导致链接失败。 一、“无继承”情况下的对象构造 1、 Explicit initialization list有三项缺点: a、 只有当class members都是public时,才有效 b、 只能指定常量,因为它们在编译时期就可以被评估求值 c、 由于编译器并没有自动施行之,所以初始化行为的失败可能会比较高一些 #include<iostream> using namespace std; class Point{ public: Point(double x = 0.0, double y = 0.0, double z = 0.0) :_x

何为安全发布,又何为安全初始化?

你。 提交于 2020-03-12 08:40:54
前言 很多时候我们需要跨线程共享对象,若存在并发我们必须以线程安全的方式共享对象,此时将涉及到我们如何安全初始化对象从而进行安全发布,本节我们将来讨论安全初始化、安全发布,文中若有错误之处,还望批评指正。 安全发布 按照正常叙述逻辑来讲,我们应该首先讨论如何安全初始化,然后再进行安全发布分析,在这里呢,我们采取倒叙的方式,先通过非安全发布的方式讨论所出现的问题,然后最后给出如何进行安全初始化,如下,我们以单例模式为例。 public class SynchronizedCLFactory { private Singleton instance; public Singleton get() { synchronized (this) { if (instance == null) { instance = new Singleton(); } return instance; } } } public class Singleton { } 如上提供了用于获取Singleton实例的公共方法,我们通过同步关键字保持线程安全,无论有多少个线程在请求一个Singleton,也不管当前状态如何,所有线程都将获得相同的Singleton实例,Singleton初始化在第一次请求Singleton时发生,而不是在初始化Singleton类时发生,至于是否惰性初始化并不是我们关注的重点

Vue基础之数据绑定

自闭症网瘾萝莉.ら 提交于 2020-03-12 07:11:41
我们学习一门新语言或者框架时,第一件事是什么呢,那必然是向世界say Hello。 创建一个Vue应用 话不多说,先上代码,让我们感受一下Vue的核心功能 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <input type="text" v-model="message"> <h1>{{message}}</h1> // {{message}}模板的输出方式 </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script type="text/javascript"> var app = new Vue({ el: '#app', // app是Vue实例的挂在对象 data: { message: "Hello world" // 字面量 } }

C语言中不同变量的访问方式

主宰稳场 提交于 2020-03-12 07:04:10
C语言中的变量大致可以分为全局变量,局部变量,堆变量和静态局部变量,这些不同的变量存储在不同的位置,有不同的生命周期。一般程序将内存分为数据段、代码段、栈段、堆段,这几类变量存储在不同的段中,造成了它们有不同的生命周期。 全局变量 全局变量的生命周期是整个程序的生命周期,随着程序的运行而存在,随着程序的结束而消亡,全局变量位于程序的数据段。每个应用程序有4GB的虚拟地址空间,在程序开始时系统将这个程序加载到内存中,为其分配内存,这个时候,会根据程序文件的内容,为全局变量分配内存,并为之进行初始化,当程序的生命周期结束时,系统回收进程所消耗的资源,这个时候,全局变量所占的内存被销毁。 下面来看一段具体的代码: int i= 0; int main(int argc, char* argv[]) { printf("%d\n", i); return 0; } 11: printf("%d\n", i); 00401268 mov eax,[i (00432e24)] 0040126D push eax 0040126E push offset string "%d\n" (0042e01c) 从上述的汇编代码中可以看到,i所对应的地址为0x00432e24,在调用全局变量时,使用的是一个具体的地址,但是并没有看对应初始化i变量的反汇编代码,这是因为在程序开始运行之前

Cipher初始化时transformation

筅森魡賤 提交于 2020-03-12 02:07:59
transformation:“算法/模式/填充”或“算法” public static final Cipher getInstance ( String transformation ) { return createCipher ( transformation , null ) ; } 使用第三方库进行aes解密,传入加密的16进制的数据、密钥、算法/模式/填充、偏移量;得到解密后的数据 byte [ ] bytes = EncryptUtils . decryptHexStringAES ( encryptData , key . getBytes ( ) , "AES/CBC/PKCS5Padding" , iv . getBytes ( ) ) ; String data = new String ( bytes ) ; 来源: CSDN 作者: 倒骑驴走着瞧 链接: https://blog.csdn.net/nongminkouhao/article/details/104802708

学习java第一天总结

点点圈 提交于 2020-03-11 23:46:16
一,java注重大小写,一个源文件中只能(并非必须要有)有一个publick类,这个public类的类名字一定要和文件名是一样的。其中类名首字母要求均大写,而成员变量,局部变量,和静态类内变量都要求单词首字母小写后面单词的首字母要大写,而类方法要求为小写。 二,类型方面, 有六个数字类型(整型:byte(8),short(16),int(32),long(64),浮点型:float(32),double(64))都是有符号的,char为一个16位的字符,使用unicode,boolead类型只有两种结果,默认为false,这样就总共有8种内置基本类型,这些基本类型定义于java.lang中。 另外java还提供引用类型。初始化float时必须加后缀f,初始化double必须加后缀d或D。数组和对象都是引用类型,所有引用类型默认值为null,数组是存放在堆上的。 还有一个void类型 三,关于变量,只有局部变量,类内成员变量,类内静态变量。其中局部变量是没有默认值的,使用时必须要初始化,未初始化无法编译,同时如果只声明,不使用并不会报错。另外两种变量有默认值,都可以在声明或类构造方法中初始化,其中类内静态变量还可以在静态语句块中初始化。对比c++,少了全局变量,静态函数内变量,文件内局部变量。同时java也没有全局函数的概念,一切均在类中。 类内静态变量可以使用classname

单例模式

大城市里の小女人 提交于 2020-03-11 21:40:44
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 1、懒汉式,线程不安全 是否 Lazy 初始化:是 是否多线程安全:否 实现难度:易 描述:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。 这种方式 lazy loading 很明显,不要求线程安全,在多线程不能正常工作。 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } 2、懒汉式,线程安全 是否 Lazy 初始化: 是 是否多线程安全: 是 实现难度: 易 描述: 这种方式具备很好的 lazy loading,能够在多线程中很好的工作,但是,效率很低,99% 情况下不需要同步

java 构造代码块

时间秒杀一切 提交于 2020-03-11 20:03:03
作用:给对象进行初始化。 对象一建立就运行,而且优先于构造函数执行。 与构造函数区别:   构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。 构造代码块中定义的是不同对象共性的初始化内容。 来源: https://www.cnblogs.com/hongxiao2020/p/12464555.html