内联函数与宏定义的区别?
- 内联函数在执行是可调试,而宏定义不可以
- 编译器会对内联函数做类型检查 宏不可以
- 内联函数可以访问类的成员变量
- 在类中声明同时定义成员函数自动转换成内联函数
#include
using namespace std;
class Empty{
public:
Empty();
//默认构造函数
Empty(const Empty&);
//默认拷贝构造函数
~Empty();
//默认析构函数
Empty&operator=(const Empty&);
//默认赋值运算符
Empty*operator&();
//默认取址运算符
const Empty*operator&()const;
//默认const取址运算
};
int main()
{return 0;
}
下列代码中的输出语句输出0吗?为什么?
#include
using namespace std;
struct CLS{
int m_i;
CLS(int i):m_i(i){}
CLS(){CLS(0);
} //不会
//在默认构造函数内部调用带参数的构造函数是递归行为,
// 程序仅执行函数调用,而不执行其后的初期化,
// 只有生成对象时,初始化表达式才会随相应的构造函数一起调用
};
int main()
{
CLS obj;
cout<
一个类A没有任何数据成员和成员函数时,sizeof(A)的值是什么?如果不是0,编译器为什莫没有让它为0. sizeof(A)大小为1,因为类是是用来定义对像的,每个对象的存储空间中存储相应的数据成员值,通常第一个数据成员的地址为对象地址.如果长度为0,无法实例化空类的对象,为此编译器添加一个字节的数据成员.
为什么static数据成员一定要在类外初始化? 【面试题|c++面试题总结】静态成员属于整个类,不属于某个对象,如果在类的内部定义,在建立多个对象时会导致多次定义,
静态数据成员的特点 静态数据成员属于类不属于对象,无论定义多少个对象,静态数据成员只存在一份
静态数据成员必须在类外进行初始化
静态数据成员存储在全局数据区,为本类的所有对象共享,不属于特定的类对象。
推荐阅读
- #+|Java控制语句
- #+|Java方法
- java|新闻传播杂志新闻传播杂志社新闻传播编辑部2022年第10期目录
- servlet|新体育杂志新体育杂志社新体育杂志社新体育编辑部2022年第8期目录
- java|美团面经 | Java后端实习生(收到感谢信
- C++|C++s简单实现Scoket编程
- C++|C++初阶(内存管理)
- 以分号结尾的诗(C++|C++之内存管理:申请与释放)
- C++|猿创征文|C++——类和对象4| 构造函数体赋值|初始化列表explicit关键字|匿名对象|static成员|静态成员变量|静态成员函数| static相关习题|友元