关于类型强制转换,有点疑问。。
- 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)个字节来解释。
[解决办法]