explicit只对构造函数起作用。此时必须这样调用函数:f(two(ONE));
27. 一个理想的string类,他知道如何从string转换到char *:
class string
{
private: char *s;
public:
string(const char *S="")
{
s=new char[strlen(S) 1];
strcpy(s, S);
}
~string(){delete s;}
operator const char *() const {return s;}
};
int main(void)
{
string str1("lizhihui2");
string str2("lizhihui2");
strcmp(str1, str2);
}
28. 假如从一种类型到另一钟类型有多种转换方法,则会出错:
classs Y;
class X
{
public: operator Y() const; //convert X to Y
};
class Y{
public: Y(X) ;//convert X to Y
};
void f(Y);
main()
{
X x;
f(x); //error: ambiguous conversion
}
29.删除数组对象:
foo *fp = new foo[100]; delete []fp; 或 delete [100]fp;
使指针更像数组:int *const q=new int[10];这样q不能移动则更像数组。
30.new堆内存用完时的异常处理器函数
void out_of_memory() {printf(“out of memory!\n”); exit(1);}
main() { set_new_handler(out_of_memory); …………….}
31.new和delete的一种全局重载方法
void * operator new(size_t sz)
{
printf("operator new :%d bytes\n",sz);
void *m=malloc(sz);
if(!m) puts("out of memory\n");
return m;
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



