对于一个空类,编译器默认产生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;
}
注意,用冒号指定二进制大小的方法只适合结构(和联合)的成员。不能用这种方法来为任意变量指定大小。