c++のstatic静态成员、对象的动态创建和释放
2017-09-18 20:59
429 查看
1、静态成员变量
(1)核心思想
静态成员变量的初始化必须在类的外部,也可以通过对象直接进行赋值;
静态函数的只能使用静态成员变量,不能使用其他普通的成员变量;
(2)代码例子边看边讲解
2、对象得动态创建和释放
(1)、先看看普通变量的创建和释放:
int * p = new int(10)——》delete p
int *p = new int [10]——>delete [10]
(2)、小方法
用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,
则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。
(3)、看代码
(1)核心思想
静态成员变量的初始化必须在类的外部,也可以通过对象直接进行赋值;
静态函数的只能使用静态成员变量,不能使用其他普通的成员变量;
(2)代码例子边看边讲解
#include <stdio.h> class Test11 { public: Test11 (int b) { m_b = b; } void print() { printf ("m_a = %d, m_b = %d\n", sm_a, m_b); } // 静态成员函数只能使用静态成员变量 static void printA() { // printf ("m_a = %d, m_b = %d\n", sm_a, m_b); printf ("m_a = %d\n", sm_a); } public: // 静态成员变量,属于类,不属于某个对象 // 是所有对象共享的,静态是在数据区分配,只有一个备份 // 静态变量不能由某个对象进行初始化 // 静态变量必须在类的外部重新定义并且初始化 static int sm_a; int m_b; }; // 重新定义类的静态变量并且初始化 int Test11::sm_a = 100; int main11_1() { Test11 t(10), t2(20), t3(30); t.print(); // 类的静态变量的使用 // 1、通过某一个对象进行引用 t2.sm_a = 30; t.print(); // 2、通过类名来引用 Test11::sm_a = 60; t3.print(); Test11::printA(); return 0; }
2、对象得动态创建和释放
(1)、先看看普通变量的创建和释放:
int * p = new int(10)——》delete p
int *p = new int [10]——>delete [10]
(2)、小方法
用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,
则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。
(3)、看代码
#include <stdio.h> #include <stdlib.h> //申请普通变量 int main7() { //普通创建动态变量和释放 int *p = (int *)malloc(sizeof(int)); free(p); //c++创建动态变量和释放,new+类型 int *p1 = new int; *p1 = 10; printf("%d\n",*p1); delete p1;//释放空间 //new可以在申请动态变量的空间的时候进行初始化 int *p2 = new int(10); printf("%d\n",*p2); delete p2; return 0; } //申请数组 int main72() { //c方法 int *p = (int *)malloc(sizeof(int)*10); free(p); //c++new方法 int *p1 = new int[10]; delete[]p1; //格式注意了!! return 0; } //动态创建对象 class Test12 { public: Test12(int a, int b) { m_a = a; m_b = b; printf ("构造函数\n"); } ~Test12() { printf ("析构函数\n"); } private: int m_a; int m_b; }; int main() { Test12 *p = (Test12*)malloc(sizeof(Test12)); free(p); // new 在创建对象的时候会自动构造函数进行对象的构建 Test12 *p1 = new Test12(10,20); // delete在进行释放对象的时候会自动调用析构函数进行对象资源的回收 delete p1; return 0; }
相关文章推荐
- 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板
- c++对象的动态创建与释放
- 第05章 CORE C++_对象的创建和使用_继承_多态_析构_xxx_cast_友元_只读成员_静态成员_多重继承_虚继承_内部类
- C++中对象的动态创建与释放
- C++之对象的动态创建和释放
- C++实现只能动态或者静态创建对象
- c/c++ 动态创建与释放二维数组
- c++创建二维动态数组与内存释放
- 关于C++中用静态成员统计实例化对象个数问题_CVTE技术面问题
- C语言中的static变量和C++静态数据成员(static member)
- C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)(转)
- c++动态加载dll中的类(用于实现依据字符串类名创建对象)
- 转摘:c++静态成员小结,c++,static
- C++ 对象的静态类型与动态类型
- C++基础学习笔记----第十一课(类的静态成员、对象模型初步认识)
- 对象的动态和静态构造创建的区别
- C++动态创建对象
- static 静态局部对象、static类成员、命名冲突与static修饰符
- Delphi对象的方法能定义- 静态(static)、虚拟(virtual)、动态(dynamic)或消息处理(message)
- c++学习笔记 动态内存分配 对象、对象数组的动态创建和释放