相关疑难解决方法(0)

2753
推荐指数
11
解决办法
81万
查看次数

隐式VS显式转换

Nicolai M. Josuttis的C++标准库声明:

两者之间存在细微差别

X x;
Y y(x) //explicit conversion
Run Code Online (Sandbox Code Playgroud)

X x;
Y y = x; //implicit conversion
Run Code Online (Sandbox Code Playgroud)

接下来说:"前者通过使用类型X的显式转换创建Y类型的新对象,而后者通过使用隐式转换创建类型为Y的新对象."

我猜对于显式与隐式转换的概念我有点困惑.在这两种情况下,你都使用X并将其推入Y本身 - 一个使用Y的构造函数,一个使用赋值运算符.

在这两种情况下如何处理转换有什么不同,是什么使它显式/隐式,以及如何使用"显式"关键字定义类构造函数(如果有的话)?

c++ type-conversion

18
推荐指数
1
解决办法
3万
查看次数

如何正确实现C++流操纵器endl?

我正在尝试为我的stream班级实现一个操纵器.我对操纵者知之甚少,但我认为我做的一切都是正确的.代码的相关部分如下:

class stream
{
public:
    stream& operator<<(bool b) { // send bool value and return *this; }
    stream& operator<<(const char str[]) { // send string and return *this }
}; 

inline stream& endl(stream& s) 
{
    return s << "\r\n";
}


class stream stream;

int main()
{
    stream << endl;
}
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么,而不是调用endl编译器调用stream::operator<<(bool).任何的想法?

c++ operator-overloading manipulators

1
推荐指数
1
解决办法
303
查看次数