1, 若char是一字节,int是4字节,指针类型是4字节,代码如下:
Class CTest
{
Public:
CTest():m_chData(‘\0’),m_nData(0)
{
}
Virtual void mem_fun(){}
private:
char m_chData;
int m_nData;
static char s_chData; //
};
Char CTest::s_chData=’\0’;
问:(1)若按1字节对齐sizeof(CTest)的值是多少? 9
虚指针 (4) + char (1) + int(4) =9;
(2)若按4字节对齐sizeof(CTest)的值是多少? 12
虚指针(4)+char(1+3)+int(4)=12;
static 的 作用
1)在函数体,一个被声明为staic的变量在这一函数被调用过程中维持其值不变。
2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但是不能被模块外其它函数访问。
它是一个本地的全局变量。
3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
引用和指针的区别?
1)引用必须被初始化,指针不必。
2)引用初始化以后不能被改变,指针可以改变所指的对象。
3)不存在指向空值的引用,但是存在指向空值的指针。
指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序可读性差,