首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于门类强制转换,有点疑问。

2012-09-12 
关于类型强制转换,有点疑问。。C/C++ codeclass Mystring{public:Mystring(string str){str_ str}~Mystri

关于类型强制转换,有点疑问。。

C/C++ code
class Mystring{public:  Mystring(string str)  {str_ = str;}  ~Mystring();private:  string str_;}int fun(Mystring a){   //Process..}int main(){   string str;   fun(Mystring(a));   return 0;}


问题
1. 这样的代码是否可行,如若不行如何改?
2.关于强制转换,T1(T2 var),是不是 按照T1的构造函数(参数为T2类型)构造一个新的T1类型的实例
3.对于指针类型,是否也是如第二条所说。



[解决办法]
fun(Mystring(a)); a哪里来的 ?

另外你这个参数不用 const引用, 拷贝的开销相当大。

[解决办法]
C/C++ code
#include <string>using namespace std;class Mystring{public:    Mystring(string str)    {str_ = str;}    ~Mystring()    {    }    string str_;};int fun( Mystring a ){    //Process..    printf( a.str_.c_str() );    return 20;}int main(){    string str = "hello world!";    fun(Mystring(str));    return 0;}
[解决办法]
做类型转换只是告诉编译器怎么去取内容,你可以把string str 转成int, 那么编译器就从str起始地址取4个字节来获取其中的内容,转成double就取8个字节来取里面的内容,转成你的mystring,就取sizeof(mystring)个字节来解释。
[解决办法]
探讨

引用:

做类型转换只是告诉编译器怎么去取内容,你可以把string str 转成int, 那么编译器就从str起始地址取4个字节来获取其中的内容,转成double就取8个字节来取里面的内容,转成你的mystring,就取sizeof(mystring)个字节来解释。


恩。受教了。。。.

还剩一个问题,强制类型转换,目标类型是否必须有对应的构造函数?

热点排行