C相关笔试题或者面试题中的概念以及技巧题2

对于一个空类,编译器默认产生4个成员函数:默认构造函数、析构函数、拷贝构造函数、赋值函数。

 

malloc使用时最好带上内存检测

if((h=(stud *)malloc(sizeof(stud)))==NULL) /*分配空间并检测*/
{
printf("不能分配内存空间!");
exit(0);
}

 

栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等。

堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统收回。

全局区(static):全局变量和静态变量的存储时放在一块的。

文字常量区:常量字符串存放在这里。

程序代码区:存放函数体的二进制代码。

 

在C++中,通过使用虚继承(virtual inheritance)解决这类问题。虚继承是一种机制,类通过虚继承指出它希望共享其虚基类的状态。在虚继承下,对给定虚基类,无论该类在派生层次中作为虚基类出现多少次,只继承一个共享的基类子对象。共享的基类子对象称为虚基类(virtual base class)

   通过在派生类列表中包含关键字virtual设置虚基类,例如:
   class istream : public virtual ios {...};
   class ostream : virtual public ios {...};
   class iostream : public istream, public ostream {...};
虚函数的作用 实现多态。简单一点来说就是基类里面的虚函数 子类里面可以重写。其实其他方法也可以实现函数重写。
带有 虚函数的类能被 实例化吗?
你写了纯 虚函数了吧,要是有纯 虚函数就不能,必须派生类给重写了才可以 实例化
 
 
怎样判断机器的字节顺序是高字节在前还是低字节在前?
使用指针的方法:
int x = 1;
if( *(char *)&x == 1)printf("little - endian /n");
else printf("lbig - endian /n");
 
位域
struct record {
   char *name;
   int refcount : 4;
   unsigned dirty : 1;
}
注意,用冒号指定二进制大小的方法只适合结构(和联合)的成员。不能用这种方法来为任意变量指定大小。
 
 
 

你可能感兴趣的:(C相关笔试题或者面试题中的概念以及技巧题2)