c++基础
jklinux
一个linux下的渣渣老码农
展开
-
程序的段,堆与栈
程序的段,堆与栈原创 2017-05-04 12:31:14 · 1731 阅读 · 0 评论 -
01 namespace名称空间
namespace原创 2017-05-04 15:23:23 · 1203 阅读 · 0 评论 -
02 C++ 的引用
很多开发人员选择使用java就是避免C/C++的指针. 而C++里的引用类型就是把C里的指针操作封装起来,避免直接操作内存地址,降低发生地址访问越界的问题. 声明引用类型的变量: 类型 & 变量名= 要引用的变量名 注意引用变量在声明时必须要初始化,也就是要指定引用的变量.我们只要像操作一般的变量来操作引用变量即可。 代码: 1 2 #include 3 4原创 2017-05-04 17:25:12 · 998 阅读 · 0 评论 -
03 函数参数的默认值
函数参数的默认值 在C++里可以指定函数的参数的默认值。当调用此函数而不传递参数值时,则使用函数声明时指定的默认值。当调用函数有传递参数值时,则使用传递的参数值。 1 2 #include 3 4 using namespacestd; 5 6 void func(int a= 33, int b = 44); 7 int main(void) 8 { 9 fun原创 2017-05-04 17:26:40 · 750 阅读 · 0 评论 -
04 函数重载
函数重载: 在C语言里,在同文件里不可以有同名的函数.在c++里可以有多个函数同名. 例如我们要实现不同类型变量的add函数: 1 2 #include 3 4 using namespace std; 5 6 int add(int a, int b) 7 { 8 cout 9 return a+b; 10 } 11 12 double a原创 2017-05-04 17:27:38 · 779 阅读 · 0 评论 -
05 动态分配内存
动态分配出来空间在堆里,如果动态分配出来的空间使用完成后不回收,只会在所属的进程退出,系统才会回收。如果进程一直不退,动态分配越来越多的空间,会引起系统可用内存不足,这就是内存泄漏。 注意:分配在堆里的空间,所在函数执行结束也不会自动回收分配在堆里的空间(会自动回收栈里分配的空间).只有调用回收函数或者进程退出才可以回收堆里分配的空间。 检查C/c++程序执行时是否有内存泄漏,原创 2017-05-05 12:40:45 · 819 阅读 · 0 评论 -
06 class与struct
在C语言里可用一个结构体来描述一种类型,如描述学生信息: typedef struct { char name[20]; int age; int id; }student_t; 如有三个学生,则: student_t a, b, c; 通常情况下,用变量成员来描述类型的属性,但是类型的行为特征应用函数来描述.在结构体只能加入函数指针变量成员来描述.原创 2017-05-05 15:43:31 · 921 阅读 · 0 评论 -
07 this指针
每个类对象内部都有一个指针变量指向自己本身, 这个指针变量名为this,权限是private,只能在类的内部访问. this指针可用于获取当前对象的地址. 1 2 #include 3 4 using namespacestd; 5 6 class MyCls { 7 private : 8 string name; 9 10 public: 11原创 2017-05-05 15:44:28 · 735 阅读 · 3 评论 -
08 const
const关键字表示限定为只读 const int *p ; //表示不能通过指针变量p来改变地址上的值 我们需要写一函数仅仅是接收参数的地址,而不会改变它的值时,就可以使用const. 如一个函数: void func(constStudent * p); 这样反映出我们需传递Student变量的地址,函数里面不改变它的值,而且我们在传递前,必须初始化变量的值. char原创 2017-05-05 17:07:57 · 700 阅读 · 0 评论 -
09 操作符重载
操作符重载: 自定义类型的对象进行运算时需要实现操作符重载函数 1 2 #include 3 4 using namespacestd; 5 6 class Student { 7 private: 8 int id; 9 int age; 10 11 public: 12 Student(intid, int age) { 13 this->id= id;原创 2017-05-05 17:08:52 · 949 阅读 · 0 评论 -
10 静态公有成员与C++单例模式
1.静态属性成员: class MyCls { public: int aa; int bb; }; 用MyCls类型创建对象a,b; 每个对象都有自己aa,bb成员,可以存放自己的属性值. 但有些场合,如统计MyCls创建出对象的个数,需要所有的类对象共用一个属性成员才可以,共用的属性成员就是静态的属性成员 Class MyCls { public: sta原创 2017-05-08 10:51:57 · 932 阅读 · 0 评论 -
11 继承,多重继承与虚继承
1.继承其实就是在一个类的基础上扩展新的功能的类型。 #include using namespace std; class Animal { private: int age; public: void eat() { age = 88; cout }; }; // Animal叫作Human的父类, Human是Animal的子类原创 2017-05-08 15:08:18 · 779 阅读 · 0 评论 -
12 虚函数与多态
1. 基类的指针 因当创建一个类的对象时会创建它的父类对象.如下代码: class Animal { public: int num; }; class Human : public Animal { public: int ret; }; class MM : public Human { }; Animal *a = new MM;原创 2017-05-08 17:44:20 · 780 阅读 · 0 评论 -
13 函数模板与类模板
模板其实就相当于提供一个类型变量,调用时再指定此类型变量具体为什么类型 1. 函数模板 例如: int add(int a, intb) { return a+b; } double add(doublea, double b) { return a+b; } 它们除了类型不一样外,算法都是一样的,所以可以改成一个函数,函数参数和返回值类型为可变化即可原创 2017-05-08 17:45:51 · 702 阅读 · 0 评论 -
14 list与vector
c++里有提供标准的模板库(STL) 1. list 其实就是把链表封装起来的类模板,每个节点装载的数据类型是不指定的,在创建对象时指定具体的数据类型 如声明一个装int数据的链表: list mylist; mylist.push_back(88);//尾部加入 mylist.push_front(99);//头部加入 遍历链表时,先声明一个指向链表节点的原创 2017-05-08 17:46:53 · 853 阅读 · 0 评论