c++のstatic静态成员、对象的动态创建和释放
来源:互联网 发布:封装windows 10 1709 编辑:程序博客网 时间:2024/06/05 16:54
1、静态成员变量
(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;}
阅读全文
0 0
- c++のstatic静态成员、对象的动态创建和释放
- c++---对象的动态建立和释放
- C++:对象数组、对象动态申请和释放、类的定义和实现分开、this指针、常成员函数、时钟
- static(c++)静态数据成员和静态成员函数
- C++之对象的动态创建和释放
- static 声明的静态成员变量和静态成员函数
- c++对象的动态创建与释放
- c++学习笔记 动态内存分配 对象、对象数组的动态创建和释放
- 关于C++/JAVA类中的static成员和对象成员的说法正确的是:
- 关于C++/JAVA类中的static成员和对象成员的说法正确的是:
- C++static静态数据成员
- C++static静态成员函数
- Objective-C的自动释放池(autoreleasepool)、静态方法快速创建对象
- 静态库和动态库,创建,使用,加载,释放
- 对象的动态和静态构造创建的区别
- C语言中的static变量和C++静态数据成员
- C语言中的static变量和C++静态数据成员
- Static 静态成员函数 和 static成员的访问 【C++ static】
- Redis学习-Sets
- 程序媛:数据库操作之封装为函数(sqlite3 )
- PAT——1019数字黑洞
- 数据结构—队列的顺序和链式存储
- linux内核源码中max和min的宏实现
- c++のstatic静态成员、对象的动态创建和释放
- LeetCode 23. Merge k Sorted Lists
- 类的六个默认成员函数总结(一)
- GreenPlum之日常SQL脚本笔记(一)
- nodejs的主要框架express的安装
- HTTP长连接与短连接
- Java中Set的contains()方法 —— hashCode与equals方法的约定及重写原则
- MATLAB 并行处理 黄色 车牌检测
- Ubuntu16.04自动更换必应壁纸