随笔分类 -  C++

摘要:常对象: const Person p1; 不可以调用普通成员函数,除非前面加了函数前面加了const可以调用常函数在对象之前加入const修饰 const Person p1; 常函数:void func() const{} void func() const {} 修饰的是this指针 cons 阅读全文
posted @ 2019-04-11 07:33 风不再来 阅读(167) 评论(0) 推荐(0) 编辑
摘要:成员变量和成员属性: 静态成员函数和静态成员变量是不属于对象的,所以不占有空间,非静态成员是属于对象的,占有存储空间,空类大小1 静态成员变量和静态成员函数是不属于对象的,非静态成员变量才属于对象上面 成员变量和成员属性是分开存储的 this指针: this指针是隐含在对象成员函数内的一种指针,当一 阅读全文
posted @ 2019-04-11 06:15 风不再来 阅读(220) 评论(0) 推荐(0) 编辑
摘要:单例对象:为了让类只有一个实例,实例不需要自己释放掉 不管创建多少个实例对象进行访问,访问的都是同一个值 如果要让某一个属性不可以更改的话,可以设置为私有的权限,private可以提供一个公有权限,查看该属性的值string getval(){return xxx},提供查看的api接口,但是只能访 阅读全文
posted @ 2019-04-11 03:43 风不再来 阅读(270) 评论(0) 推荐(0) 编辑
摘要:静态成员变量:可以共享数据,类内声明,类外初始化(实现) 可以看到p2,p1指向的age的结果是相同的,因为第二次通过p2来访问属性的时候,这个name值已经共享了,所以两者是相同的,所有对象共享数据 总结:类内声明,类外实现(注意是类外),共享数据,分权限,public是可以访问的,private 阅读全文
posted @ 2019-04-11 02:21 风不再来 阅读(138) 评论(0) 推荐(0) 编辑
摘要:explicit关键字:防止构造函数隐式类型转换 运算符:new(重要):分配内存空间,delete释放内存空间 函数:malloc new的运算符里,当用new创建对象的时候,它在堆区为对象分配内存并调用构造函数完成初始化,delete释放空间 栈区开辟:Person p1 堆区开辟:Person 阅读全文
posted @ 2019-04-10 23:11 风不再来 阅读(138) 评论(0) 推荐(0) 编辑
摘要:构造函数的调用规则: 系统会提供三个函数,一个是默认的构造函数(无参,函数体为空),一个是拷贝构造函数(无参,函数体为空),一个是析构函数,对类中非静态成员属性简单值拷贝\如果用户定义了拷贝构造函数,C++不会再提供任何默认拷贝函数当我们提供了有参的构造函数之后,系统就不会给默认提供构造函数了 初始 阅读全文
posted @ 2019-04-10 14:05 风不再来 阅读(144) 评论(0) 推荐(0) 编辑
摘要:拷贝构造函数的调用时机: 第一种:使用已经创建好的对象来初始化新的对象 第二种方式:值传递的方式拷贝 第三种方式:以值方式返回局部对象 release模式下会做优化,debug模式下没有做优化 release模式下结果:第三种方式的 阅读全文
posted @ 2019-04-10 12:24 风不再来 阅读(306) 评论(0) 推荐(0) 编辑
摘要:struct和class的访问权限:结构体,类 struct和class 是相同的,唯一的而不同,就是默认权限,struct是public,class默认是private protected:保护权限,类内部(不包括继承的子类)是可以访问(属性和方法),类外部是不可以访问的 public公有权限:类 阅读全文
posted @ 2019-04-10 05:39 风不再来 阅读(206) 评论(0) 推荐(0) 编辑
摘要:默认参数: //默认参数//函数的默认参数,参数后面有'='//函数参数注意事项,如有一个位置有了默认参数//那么从该位置的后面就必须要有参数 void func(int a, int b = 10, int c = 4) { //b有默认参数,b的后面也应该要有默认参数,只要有一个位置有,那么之后 阅读全文
posted @ 2019-04-10 04:46 风不再来 阅读(131) 评论(0) 推荐(0) 编辑
摘要:常量引用:形参不能修改,节省开辟内存空间的开销 用一级指针代替二级指针常量引用,使用场景,修饰形参为只读const int a=10会分配内存如果使用引用,在前面加了一个const的话,那么就不可以修改形参 const int v = 43;//真正的一个常量,可以初始化数组,在C中不可以这样,C+ 阅读全文
posted @ 2019-04-10 01:54 风不再来 阅读(155) 评论(0) 推荐(0) 编辑
摘要:引用:& &放在左边就是引用,放在右边就是取地址 给数组起别名: 第二种方式起别名,typedef //尽量使用const替代define//define宏常量没有类型概念//define宏没有作用域概念 参数的传递方式: 值传递: 指针传递: 运行结果: 引用传递: 如果函数的返回值是引用的话,那 阅读全文
posted @ 2019-04-09 06:28 风不再来 阅读(216) 评论(0) 推荐(0) 编辑
摘要:c++是c语言的增强版,但是和c语言之间有何区别呢? c和c++的区别: 1.全局变量检测增强int a;int a=10; 2.函数检测增强,参数类型增强,返回值检测增强,函数调用参数检测增强(参数检测个数)c中传入的参数与接收的参数可以不同,只是警告,c中你传多少个参数,只有几个接收参数都可以, 阅读全文
posted @ 2019-04-09 02:20 风不再来 阅读(368) 评论(0) 推荐(0) 编辑
摘要:双冒号(::)的作用:作用域运算符,全局作用域 namespace命名空间:用途解决名称冲突问题必须在全局作用域下声明命名空间可以放入函数,变量,结构体,类命名空间可以嵌套命名空间命名空间是开放的,可以随时加入新的成员匿名命名空间 1.嵌套命名空间 2.匿名命名空间: 如果写了没有命名的命名空间,相 阅读全文
posted @ 2019-04-09 00:27 风不再来 阅读(317) 评论(0) 推荐(0) 编辑
摘要:首先呢,下载一个visual studio 2017的编辑器工具,可能有最新的2019年的版本,根据自己喜欢选择哪个版本就好了 visual studio IDE下载地址:https://visualstudio.microsoft.com/zh-hans/ 有社区版,企业版,专业版,一般来说个人的 阅读全文
posted @ 2019-04-08 23:13 风不再来 阅读(21501) 评论(0) 推荐(1) 编辑
摘要:c++中的++来自c语言中的递增运算符,该运算符将变量加1,c++起初也叫c with class ,通过通过名称表面,C++是对c的扩展,因此C++是c语言的超集,这以为这任何有效的c程序都是有效的c程序,C++程序可以使用已有的c程序库 C++语言在c语言的基础上添加了面向对象编程和泛型编程的支 阅读全文
posted @ 2019-04-08 11:08 风不再来 阅读(263) 评论(0) 推荐(0) 编辑