char street[30]; char city[18]; char zip[6]; public: Employee(char*n,char*str,char*ct,char*z); void setName (char*n); void display(); };
Employee::Employee(char*n,char*str,char*ct,char*z) { strcpy(name,n); strcpy(street,str); strcpy(city,ct); strcpy(zip,z); }
void Employee::setName (char*n) { strcpy(name,n); }
void Employee ::display (){ cout< int main(){ Employee e1(\逗逼\马勒戈壁3号\葫芦岛\ e1.display (); cout< 6-28分别将例6-10程序和6-16程序中对指针的所有使用都改写为与之等价的引用形式,比较修改前后的程序,体会在哪些情况下使用指针更好,哪些情况下使用引用更好。 解:6-10 #include void splitFloat(float x,int&intPart ,float&fracPart){ intPart=static_cast int main(){ cout<<\ for(int i=0;i<3;i++){ float x,f; int n; cin>>x; splitFloat(x,n,f); cout<<\ } return 0; } 6-16 #include int main (){ cout<<\ Point &ptrl=*new Point; delete &ptrl; cout<<\ ptrl=*new Point(1,2); } delete &ptrl; return 0; 6-29运行下面的程序,观察执行结果,指出该程序是如何通过指针造成安全性隐患的,思考如何避免这种情况的发生。 #include int arr[]={1,2,3}; double*p=reinterpret_cast cout< 解:在32位平台下,一般int是4个字节,double 是8个字节,代码第5、6行强制转换后的赋值过程中修改了arr[0] , arr [1] , 的内存空间,因此导致arr[1]的非预期输出。 避免这种情况的措施:1、尽量避免使用类型转换;2、必须使用类型转换时,尽量开辟新的内存空间,在新内存空间中完成转换。3、必须使用原有内存空间时,要特别注意各种数据类型在不同平台下的内存占用大小。 6-30 static_cast,const_cast和reinterpret_cast各自应在哪些情况下使用? 解:static_cast运算符实现类型间的转换,但没有运行时类型检查来保证转换的安全性。 Cosnt_cast运算符用来修改类型的const或volatile属性。可以去除对象或者变量const或volatile属性。 Reinterpret_cast可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针。 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++第六章课后习题(4)在线全文阅读。
相关推荐: