摘要: 举个书上的例子,地产中介商卖的是房子,有这样一个类:class HomeForSale{…}每个房子都是不一样的,所以希望这样:1 HomeForSale house1;2 HomeForSale house2;3 HomeForSale house3(house1); // house3企图与house1相同,不能通过这种情况4 house2 = house1; // house2也不应该与house1相同,也不能通过这种情况我们希望最后这两句话不能通过编译,那么怎样在C++中实现呢?一种想当然的做法,就是不去写拷贝构造函数和赋值运算符。但由上一个条款可以知道,这样做是行不通的,C++编译器 阅读全文
posted @ 2013-03-17 19:50 Jerry19880126 阅读(1261) 评论(1) 推荐(2) 编辑
摘要: 一个常见的面试题就是问“一个空类占几个字节”,想当然的是0个字节,但事实上类要区分不同的对象,比如:1 EmptyClass obj1;2 EmptyClass obj2;即便是空类,也要能识别obj1和obj2的不同,所以空类仍然要占字节数,一般占一个字节。还有一个针对空类的问题是“一个空类里面有什么”,就是想问编译器为这个空类自动生成了哪些成员函数。很容易想到的是生成了默认的构造函数和析构函数,事实上还有拷贝构造函数和赋值运算符,所以,总共生成了四个成员函数。具体地说,就是你表面上写了1 Class EmptyClass2 {3 };但实际编译器为你加了四个成员函数,所以看起来像这样: 1 阅读全文
posted @ 2013-03-17 12:43 Jerry19880126 阅读(1040) 评论(0) 推荐(2) 编辑