在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. [] 这让我想到静态分配内存和动态分配内存,与数据名称无关 局部变量和临时变量会储存在静态缓存区,随着程序运行完而消亡(例如在循环体中定义的局部变量随着循环体结束,局部变量也会消亡)。 内存泄漏是指:就是内存驻留了指针存在了未指向的内存空间的地址值。 例子:声明一个指针对象,指针指向的结果为对象在内存中动态分配的空间,其后在操作中又将另一对象的内存地址赋给它,最后没有对之前指针指向的内存空间进行delete. int *old = new int; int *new = new int //delete old *old = *new cout<<*old<<endl; 2. * 指针 指针就是变量,在程序中将经常用到指针,其中应该理解:指针、内存地址值、位置、地址所在内存中的值 int *point = new int(1); //指针-*point 内存地址值-point 位置-point 地址所在内存中的值-1 3. & 隐式指针, 在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,可提高程序执行效率和代码的健壮性! int a; int &ya=a; //定义了引用ya,它是变量a的引用(别名) 参考:C++中引用(&)的用法和应用实例 (1)&在此不是求地址运算,而是起标识作用。 (2)类型标识符是指目标变量的类型。 (3)声明引用时,必须同时对其进行初始化。 (4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。 ra=1; 等价于 a=1; (5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。故:对引用求地址,就是对目标变量求地址。&ra与&a相等。 (6)不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名。 应用: 1. 引用作为参数 函数的传递方式有两种:传值、传址。 传值方式为C语言常见的,往往是将数据压入栈中(由编译器自动释放空间,栈的初始大小是由操作系统硬件决定),影响效率。如果是将引用作为参数传递,速度和效率不用说了. swap(a,b) 和swap(&a,&b); 4. new 操作符动态分配内存。 通常情况下会声明一个指针,指针的值就是new操作符为某个数据类型动态分配一个足够大的内存空间。 5. const 不容改变的 6. inline 适当加入此修饰能提高程序的运行效率 inline void getElements(DataType *data); 7. virtual 此修饰符有点像多态的意思,当基类中的某函数被virtual修饰时(public),程序调用此函数,则会执行继承该基类的派生类中的方法。
class A { public: A() {} virtual void foo() { cout << "This is A." << endl; } }; class B : public A { public: B() {} void foo() { cout << "This is B." << endl; } }; int main(int argc, char* argv[]) { A *a = new B(); a->foo(); if(a != NULL) delete a; return 0; }
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论