美文网首页
2020-02-10 C++基础2

2020-02-10 C++基础2

作者: hangzhou吴彦祖 | 来源:发表于2020-02-10 14:19 被阅读0次

1:为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数?

    将可能会被继承的父类的析构函数设置为虚函数,可以保障我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针可以释放掉子类的空间,防止内存泄漏。

C++默认的析构函数不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存;对于不会被继承的类来说,其析构函数如果是虚函数就会浪费内存;因此C++默认的析构函数不是虚函数,而是当其需要作为父类的时候,才设置为虚函数。

2:请你说一下函数指针

定义:指向函数的指针变量,用途:调用函数和做函数的参数。比如回调函数。

例子:char* fun(char* p){} // 函数fun

char* (*pf)(char* p)//函数指针pf

pf=fun;

pf(p);通过函数指针pf调用函数fun

3:C++析构函数的作用

当对象结束其生命周期的时候,系统会自动调用,不带任何参数也没有返回值;只能有一个析构函数,不能重载;如果一个类中有指针,且在使用过过程中动态申请了内存;那么最好显示构造析构函数在销毁类之前,释放申请的内存空间,避免内存泄漏。类的析构顺序:(1)派生类本身的析构函数;(2)对象成员析构函数 (3)基类析构函数。

4:strcpy 字符串拷贝函数

char* strcpy(char* dest;const char* src)

从src逐字节拷贝到dest,直到遇到'\0'结束,因为没有指定长度,可能会导致拷贝越界,造成缓冲区溢出漏洞,安全版本是strncpy函数。strlen函数是计算字符串长度的函数,返回从开始到'\0'之间的字符个数。

5:以下四行代码的区别是什么?

const char* arr=“123”;

字符串常量保存 在常量区。不能通过brr区修改123的值

6:const修饰的成员函数目的是什么?

const修饰的成员函数表明函数调用不会对对象做出任何更改,事实上,如果确认不会对对象做出更改,就应该为函数加上const限定

相关文章

  • 2020-02-10 C++基础2

    1:为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数? 将可能会被继承的父类的析构函数设置为虚...

  • 2020-02-10 C++基础3

    1:C++函数栈空间的最大值 默认为1M 可以调整 2:extren c C++调用C函数需要extren c 因...

  • 《大学专业生涯 计划书单》

    1、基础中的基础 →C++ 《C++Primer》 《EffectiveC++》 《Inside the C++ ...

  • C++面向对象基础(二)

    目录 C++ 基础(一) C++面向对象基础(二) 一、类 C++ 中可以使用 struct、class 来定义一...

  • C++ 学习(2) ---- 基本语法介绍

    C++ 基本语法(2) C++基础语法说明模板NA运算符重载NA强制类型转换static_cast,const_c...

  • 2020-02-10

    2020-02-10 2020-02-10 星期一 一、亿万富翁制造机分享 早上起床照镜子,看着自己的眼睛:美女,...

  • C++学习笔记之C++基础

    1、C++学习计划 (1)基础语法(复习)——初步了解,基础编程(2)核心编程——面向对象(3)提高编程——泛型编...

  • Java与C++的差异(基础)

    Java与C++的差异(基础)
    JAVA基础 C++的成员方法(函数) 在JAV...

  • C/C++基础(2)

    字符串 定义 char buf1[] = "abcdef";char buf2[] = {'a', 'b', 'c...

  • C++基础复习2

网友评论

      本文标题:2020-02-10 C++基础2

      本文链接:https://www.haomeiwen.com/subject/ogcaxhtx.html