C++学习笔记(二)

  1. 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?

    C++语言是一种面向对象编程语言,支持函数重载,而C语言是面向过程的编程语言,不支持函数重载,所以函数被C++编译后在库中的名字与C语言不同

  2. 函数重载的原理是什么?

    名字改编(name mangling),C++编译器会根据参数类型、个数、顺序的不同而改编。

  3. inline函数与带参数的宏定义的区别?

    1、在预编译时期,宏定义在调用处执行字符串的原样替换(宏展开)。在编译时期,内联函数在调用处展开,同时进行参数类型检查,宏定义不会进行参数类型检查。

    2、内联函数首先是函数,可以像调用普通函数一样调用内联函数。而宏定义往往需要添加很多括号防止歧义,编写更加复杂。

    3、内联函数可以作为某个类的成员函数,这样可以使用类的保护成员和私有成员。而当一个表达式涉及到类保护成员或私有成员时,宏就不能实现了(无法将this指针放在合适位置)。

  4. std::string与const char * 有什么区别?

    前者是C++风格的字符串而后者则为C风格的字符串;

    后者是以'\0'(空字符)来结尾的字符数组,且后者是不可修改的只读字符串,一般用作常量字符串;

  5. 空类占据的空间有多大?

    空类占据的空间是1(无论是单重继承还是多重继承);

    但若是虚继承则是会有虚指针,占据8(64位情况下)

  6. 一个空类会自动创建哪些函数呢?

    默认构造函数(无参);

    拷贝构造函数;

    默认赋值函数;

    析构函数;

  7. c++中对象的初始化与赋值的区别?

    当对象在创建时获得了一个特定的值,我们说这个对象被初始化。初始化不是赋值,初始化的含义是创建变量赋予其一个初始值,而赋值的含义是把当前值擦除,而以一个新值来替代。对象初始化可以分为默认初始化、直接初始化、拷贝初始化以及值初始化。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值