- 博客(24)
- 资源 (4)
- 收藏
- 关注
原创 第二十一节 C++ - 复制构造函数(浅复制,深复制)
例子1: 不带指针成员的类,此例子,为了看是否产生临时对象(浅复制,按值传递)#include <string>/*此类中没有指针成员*/class Human{private: std::string name;/*public类外可访问*/public: void getPersonName(); Human(std::string input); ~Hum...
2018-03-28 18:01:12 242
原创 第二十节 C++- 析构函数的使用及调用
析构函数是类的一种特殊函数,只有在对象被销毁时才被调用,在析构函数内,可以对堆内存进行释放,如new(构造函数),delete(析构函数)。构造函数可以有多个(重载),而析构函数只有一个(不能对析构函数进行重载)。如果忘记实现析构函数,编译器会自动生成一个伪析构函数(空函数),从下面代码,可以看出析构函数的使用及调用顺序。/*Human.h*/#include <string>c...
2018-03-28 17:13:42 9545 1
原创 vimrc配置
set mouse=aset nuset ts=4syntax onset autoindentset cursorlineset ignorecaseset hls"""""""""""""""""""""""""""&q
2018-03-28 13:25:19 340
原创 Source Insight快捷键大全
附: Source Insight快捷键大全退出程序 : Alt+F4重画屏幕 : Ctrl+Alt+Space完成语法 : Ctrl+E复制一行 : Ctrl+K恰好复制该位置右边的该行的字符 : Ctrl+Shift+K复制到剪贴板 : Ctrl+Del剪切一行 : Ctrl+U剪切该位置右边的该行的字符 : Ctrl+;剪切到剪贴板 : Ctrl+Shift+X剪切一个字 : Ctrl+,左...
2018-03-28 10:33:23 375
原创 第十九节 C++ - 带初始化列表的构造函数
/* Human.h */#include <string>class Human {private: std::string name; unsigned int age;public: /*构造函数与类同名,在创建对象时被调用,当没有定义构造函数时,系统将调用一个默认的构造函数 * 析构函数,在对象被销毁时调用 */ Human(std::string...
2018-03-27 22:49:59 443
原创 第十八节 C++ - 带默认参数值的构造函数
/* Human.h */#include <string>class Human {private: std::string name; unsigned int age;public: /*构造函数与类同名,在创建对象时被调用,当没有定义构造函数时,系统将调用一个默认的构造函数 * 析构函数,在对象被销毁时调用 */ Human(std::string...
2018-03-27 22:34:24 1194
原创 第十七节 C++ - 重载构造函数
/* Human.h */#include <string>class Human {private: std::string name; unsigned int age;public: /*构造函数与类同名,在创建对象时被调用,当没有定义构造函数时,系统将调用一个默认的构造函数 * 析构函数,在对象被销毁时调用 */ Human(); Human(s...
2018-03-27 22:08:34 2524
原创 第十六节 C++ -构造函数与析构函数基础
构造函数与其他类的函数不同,构造函数在创建对象时被调用,构造函数与类型相同,但没有返回值。/* Human.h */#include <string>class Human {private: std::string name; unsigned int age;public: /*构造函数与类同名,在创建对象时被调用,当没有定义构造函数时,系统将调用一个默认的...
2018-03-27 21:53:27 146
原创 第十五节 C++ -class类和对象简介
/* Human.h */#include <string>/*使用关键字class定义一个类,类只有被实例化后才能使用*/class Human {private: //私有权限,在对象之外无权限被访问 std::string name; //类的属性 unsigned int age;public: //公有权限,在对象外可以被访问,可看作对外的接口(类的外部...
2018-03-27 21:28:07 195
原创 第十四节 C++ - new和delete讲解
#include <iostream>#include <string>int main(){ /* 静态数组的使用存在两个问题: * 1: 限制了容量,容量大小不可调节 * 2: 降低了系统性能,当我仅存在一个数据时,其他99个空间将是被浪费的 */ int arrayNum[100] = {1, 2}; //静态内存分配,大小固定,使用过程中不可...
2018-03-25 22:15:56 375
原创 第十三节 C++ -指针详解
1 使用C++指针,最好进行先初始化或者初始化为NULL,避免野指针,若不进行初始化,指针将指向随机值2 使用指针(数组)要防止内存访问越界3 使用指针前,务必检查其是否为NULL,只有在指针有效时才使用指针#include <iostream>void paramPointerFun(int* params); //声明指针可传入的函数int main(){ int da...
2018-03-25 20:40:19 263 2
原创 第十二节 C++ - inline 内联函数
常规的函数调用,处理器会使用栈指针跳转到函数处去执行,其中会涉及到栈操作,及跳转操作,这样的操作很花费一点的时间(虽然时间很短),但对于只有几句语句的函数来说,这种时间开销是很不划算的,为了解决这个问题,编程语言中引入了inline关键字,可以用它来定义某个函数为inline函数,编译器将此类函数在被调用的地方展开,这样就提高了代码的执行速度,但是,inline函数也有其弊端,它会使代码量膨胀。#...
2018-03-25 18:56:17 177
原创 第十一节 C++ - 按引用传递参数给函数
引用相当于给变量起了另一个名字,但是他们指的是同一个变量,对任何一个名字进行处理,都是对同一个地址进行操作。通过在函数内外打印变量地址可以验证这一点。#include <iostream>void displayFun(int& value); //参数引用int main(){ int dateInt = 100; std::cout << "...
2018-03-25 18:39:25 411
原创 第十节 C++ - 将数组当参数传递给函数
不废话,直接上代码例子:#include <iostream>void displayArray(int Array[], int length); //与下面函数形成函数重载void displayArray(char Array[], int length);int main(){ int array_Int[] = {1, 2, 3, 4, 5}; char...
2018-03-25 18:06:45 409
原创 Linux内核之container_of详细解析
container_of用来根据成员变量查找所在基结构体的地址,其宏定义如下:#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__...
2018-03-22 11:07:11 1048
原创 第九节 C++ -运算符优先级
优先级操作符描述例子结合性1()[]->.::++--调节优先级的括号操作符数组下标访问操作符通过指向对象的指针访问成员的操作符通过对象本身访问成员的操作符作用域操作符后置自增操作符后置自减操作符(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;Class::age = 2;for( i = 0; i < 10; i++ ) ...
2018-03-18 20:22:04 302
原创 第八节 C++ - std::string 字符串讲解
C语言中,对字符串的处理(复制和拼接),一般使用strcpy(字符数复制函数),strcat(字符串拼接函数)等函数,用strlen来查看字符串的长度。 而这些函数使用时具有极高的风险,它们会寻找字符串结束符‘\0’, 如何使用C语言字符串,且忘记了在字符串后面添加结束符,将会出现跨界的风险。现在C++提供了std::string, 它的头文件为#include <string>, s...
2018-03-18 19:37:30 3194
原创 第七节 C++ - C风格字符串
C语言风格的字符串可以看成是特殊的字符数组,数组的最后一个字符为空字符/字符串结束字符'\0',结束字符‘\0’告诉编译器字符串到此结束。使用C语言风格字符串要注意:1 直接使用字符串时,编译器会自动在字符串最后添加‘\0’;2 在字符数组中使用字符串时,要手动在最后添加‘\0’,否则将会出现访问越界的风险;3 在字符数组中添加‘\0’,不会改变数组大小,但是会改变字符串的大小;#include ...
2018-03-18 18:54:38 237
原创 第六节 C++ - 动态数组 std::vector
#include <iostream>#include <vector> //include header file of std::vector#define ARRAY_SIZE 3int main(){ std::vector<int> DynaArray(ARRAY_SIZE); //定义一个动态数据,主要后面是括号(),静态数组是[...
2018-03-14 09:44:02 728
原创 第五节 C++ 动态内存管理(new, delete)和 C语言动态内存管理
C语言的动态内存分配是由函数malloc/calloc/realloc 和free (需要成对出现)来实现,而C++是由操作符new 和delete(需要成对出现)来实现动态内存管理的。new和delete的底层实现是由malloc和free来实现。 动态内存分配是在堆上分配的,需要手动去释放,这也就是为什么需要成对出现的原因。而栈上的内存分配是自动释放,不需要手动去释放,比如局部变量就是保存在栈...
2018-03-12 22:55:45 402
原创 第四节 C++ 函数重载
在真实的软件开发中,经常要使用到函数重载,尤其在类的设计中,经常遇到。C++的函数重载是指,多个函数可以使用同一个函数名,但是条件是函数的参数列表必须不同,参数列表内,可以是参数的数目不同,参数的类型不同等,如下所示:#include <iostream>void setValue(int one);void setValue(int one, int two);void se...
2018-03-12 22:01:01 182
原创 第三节 C++-函数
include <iostream> //header fileusing namespace std; // use namespaceint main(){ int ret = 0; int Today = 0; int WeekPlan(int day); //function declaration Today = 2; ret = WeekPlan...
2018-03-01 21:00:03 180
原创 第二节 C++ -编写第一个C++程序 (std:cout)
#include <iostream> //header fileint main(){ int age = 100; std::cout << "hello C++!" << std::endl; std::cout << "hello "; std::cout << "C++!" &
2018-03-01 20:18:17 9383
原创 第一节 C++简述
1979年,C++诞生于贝尔实验室,是一种面向对象的语言(C语言面向过程)。 C++实现了继承、多态、封装和抽象等概念。C++包含类的实现,类由成员变量(属性)和成员函数(方法)组成。 C++可用于开发驱动程序,操作系统,web服务器,常用软件,图像处理,搜索引擎等步骤: 1 使用编辑器写C++程序 2 C++编译器编译此程序, 生成.o 或 .obj文件 ...
2018-03-01 19:50:56 325
C++精粹 ,一本不错的书
2017-07-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人