文章分类 -  C++

摘要:Mem系列函数通常处理内存内容,而Str通常处理字符串,这俩个家族系列函数经常会使用为了能够更好地体现出两家族函数的异同,将采用对比的形式一一列出: 一 拷贝函数 函数名称: memcpy 函数原型:void *memcpy(void *dest, const void *src,size_t n) 阅读全文
posted @ 2016-11-03 10:14 ren_zhg1992 阅读(719) 评论(0) 推荐(0)
摘要:c++中的初始化与赋值区别: 先来个区别说明:赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一个新的对象,并且其初值来源于另一个已存在的对象。编译器会区别这两种情 况,赋值的时候调用重载的赋值运算符,初始化的时候调用拷贝构造函数。如果类中没有拷贝构造函数,则编译器会提供一个默认的。这个默认 阅读全文
posted @ 2016-11-02 17:29 ren_zhg1992 阅读(245) 评论(0) 推荐(0)
摘要:拷贝构造是确确实实构造一个新的对象,并给新对象的私有成员赋上参数对象的私有成员的值,新构造的对象和参数对象地址是不一样的,所以如果该类中有一个私有成员是指向堆中某一块内存,如果仅仅对该私有成员进行浅拷贝,那么会出现多个指针指向堆中同一块内存,这是会出现问题,如果那块内存被释放了,就会出现其他指针指向 阅读全文
posted @ 2016-11-02 16:21 ren_zhg1992 阅读(125) 评论(0) 推荐(0)
摘要:我们都知道拷贝构造函数和赋值构造函数最大的不同在于: 拷贝构造是确确实实构造一个新的对象,并给新对象的私有成员赋上参数对象的私有成员的值,新构造的对象和参数对象地址是不一样的,所以如果该类中有一个私有成员是指向堆中某一块内存,如果仅仅对该私有成员进行浅拷贝,那么会出现多个指针指向堆中同一块内存,这是 阅读全文
posted @ 2016-11-02 16:06 ren_zhg1992 阅读(98) 评论(0) 推荐(0)
摘要:引用是什么? 引用其实就是给变量起的一个别名,使用这个别名跟使用变量名没有区别。 那什么又是变量名呢? 变量名实质上是一段连续存储空间的别名,是一个标号(门牌号),编译器通过变量来申请并命名内存空间,程序员可以通过变量的名字可以使用存储空间。 也可以这样理解,变量名是逻辑概念,变量是物理层面,变量含 阅读全文
posted @ 2016-11-02 14:27 ren_zhg1992 阅读(199) 评论(0) 推荐(0)
摘要:基本概念 //类是把属性和方法封装。。。 //类的内部 //类的外部 //我们抽象了一个类,用类去定义对象 //类是一个数据类型,类是抽象的 //对象是一个具体的变量。。占用内存空间。 //类做函数参数的时候,类封装了属性和方法,在被调用函数里面, 不但可以使用属性,而且可以使用方法(成员函数); 阅读全文
posted @ 2016-11-02 11:19 ren_zhg1992 阅读(184) 评论(0) 推荐(0)
摘要:C++有匿名对象,只在当行代码有用,离开当行代码立即析构!!! 什么是匿名对象? 匿名对象可以理解为是一个临时对象,一般系统自动生成的,如你的函数返回一个对象,这个对象在返回时会生成一个临时对象。 匿名对象的生命周期(很重要!!!) 例一: 输出: 例二: 输出: 说明: 1、在执行playStag 阅读全文
posted @ 2016-11-02 11:01 ren_zhg1992 阅读(2001) 评论(0) 推荐(1)
摘要:在qt中,输入类名.后面会自动出现成员函数,如果直接用的话会出错,但是在vs2013中没有这个缺陷。 上面的代码中: A().mytest()可以正确使用,是因为A()会产生一个匿名对象然后用这个匿名调用mytest(). 阅读全文
posted @ 2016-11-02 10:41 ren_zhg1992 阅读(333) 评论(0) 推荐(0)
摘要:什么是静态成员函数和静态成员变量??(有些地方也叫作静态函数成员和静态数据成员) 当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。 静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。 静态成员变量的用途: 静态成员变量的用途之一 阅读全文
posted @ 2016-11-02 10:28 ren_zhg1992 阅读(258) 评论(0) 推荐(0)
摘要:运算符重载基础 (该文档来自于对传智博客视频的整理) 全局函数和类成员函数的区别 为什么要有运算符重载 原因: Complex是用户自定义类型。。编译器根本不知道如何进行加减。。。编译器给你提供了一种机制,让用户自己去完成,自定义类型的加减操作。。。。。这个机制就是运算符重载机制。 简单的代码如下: 阅读全文
posted @ 2016-11-01 21:56 ren_zhg1992 阅读(177) 评论(0) 推荐(0)
摘要:1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数 两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存;二是在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存 2. 没有正确地清除嵌套的对象指针 3.  阅读全文
posted @ 2016-11-01 21:29 ren_zhg1992 阅读(311) 评论(0) 推荐(0)
摘要:C++中类的初始化操作有四个部分组成: 1.初始化列表: 所有类非静态数据成员都可以在这里初始化, 所有类静态数据成员都不能在这里初始化 2.构造函数体: 对于类非静态数据成员: const型成员不能在这里初始化 引用型成员不能在这里初始化 没有默认构造函数的成员不能在这里初始化 对于类静态数据成员 阅读全文
posted @ 2016-11-01 21:26 ren_zhg1992 阅读(3078) 评论(0) 推荐(0)
摘要:简单的初始化列表 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如: class CExample {public: int a; float b; //构造函数初始化列表 CExample(): a(0),b(8.8) {} //构 阅读全文
posted @ 2016-11-01 21:07 ren_zhg1992 阅读(123) 评论(0) 推荐(0)
摘要:在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库、Qt中或者C++标准库中的相关类声明中explicit出现的频率是很高的。了解explicit关键字的 阅读全文
posted @ 2016-11-01 20:48 ren_zhg1992 阅读(250) 评论(0) 推荐(0)
摘要:格式: const point_type variable_name 作用: 使指针指向的值是一个常量,不能修改.而指针本身并非常量,可以改变指针指向的地方. 例如: const int* p = &a; p = p + 1 正确:p不是常量.可以修改 *p = 16; 错误:试图改变p指针所指向的 阅读全文
posted @ 2016-11-01 20:38 ren_zhg1992 阅读(87) 评论(0) 推荐(0)
摘要:类的const成员函数 如果为类成员函数,他表示 (1)不能修改成员变量; (2)不能调用非const函数; (3)其他const函数可以调用它;(其他非const函数当然也可以调用它) (4)可以被const对象(或引用用指针)上调用,比如:const A a; a.f(),也可以被普通对象调用。 阅读全文
posted @ 2016-11-01 20:24 ren_zhg1992 阅读(171) 评论(0) 推荐(0)