zoukankan      html  css  js  c++  java
  • C++细节理解

    1.为什么static类外初始化不需要static关键字

    答:因为类外static变量或函数表示限定在此源文件中才能使用,而类中的static变量或函数表示由本类及其所有对象共享,如果在类外初始化或定义类的成员变量或函数加上static关键字,会引起两个含义上的语义歧义.

    2.为什么析构函数要被定义为虚函数

    答:定义虚析构函数后,由于多态,当使用delete释放基类指针指向派生类对象时,会调用派生类的虚构函数,然后派生类的析构函数自动调用基类析构函数不是虚函数的话,直接调用基类的析构函数了。如果派生类中有用new分配的内存,就无法释放了

    3.为什么构造函数不能为虚函数

    (1) 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功,编译器无法知道对象的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。

    (2)虚函数的执行依赖于虚函数表。而虚函数表构造函数中进行初始化工作,即初始化vptr,让他指向正确的虚函数表。而在构造对象期间虚函数表还没有被初始化,将无法进行

    4.如何辨别函数型调用是函数,类的构造函数还是函数对象

    答:通过查看定义,用函数名调用的是函数,用类名调用的是类的构造函数,用类的对象名调用的是函数对象

  • 相关阅读:
    c/c++中两颗璀璨的明珠
    deepin软件中心打不开
    shell之rm -rf的别名设置
    历史命令脚本
    mysql之7xtrabackup
    python之3内置容器
    python之第一个例子hello world
    python之安装
    shell脚本练习(autocert)
    【转】nginx之逻辑运算
  • 原文地址:https://www.cnblogs.com/blueoverflow/p/4720610.html
Copyright © 2011-2022 走看看