void main() {
cout << "Hello World" << endl;
}
我不允许对上述主要功能进行任何更改,而屏幕上的输出需要类似于:
初始化
Hello World
清理
我的想法是我需要使用<<
. 但是我需要知道 operator 后面的双引号字符串的数据类型是什么<<
,否则我不会充分利用我重新定义的<<
operator。有人有什么想法吗?
void main() {
cout << "Hello World" << endl;
}
我不允许对上述主要功能进行任何更改,而屏幕上的输出需要类似于:
初始化
Hello World
清理
我的想法是我需要使用<<
. 但是我需要知道 operator 后面的双引号字符串的数据类型是什么<<
,否则我不会充分利用我重新定义的<<
operator。有人有什么想法吗?
文字的类型是“{suitable number of} const chars 的数组”,但更好的方法可能是拥有某种全局对象。
(为数组添加重载可能甚至不起作用,因为现有的重载char const *
会妨碍。)
你可以重新定义std::ostream& operator<< (std::ostream&, const char*)
. 这种方法有一个大问题:它是未定义的行为。标准库已经定义了该函数,您不能重新定义标准库函数。
解决这个问题的关键是识别它cout
在全局命名空间中。解决方案很简单:编写您自己的重载类operator<<
并创建一个名为的全局变量,该变量cout
是该类的一个实例。这样你就不会遇到未定义的行为。
您还需要对endl
全局命名空间中的内容进行处理。
您的代码应该类似于
// Insert your code here.
int main () {
cout << "Hello World" << endl;
}
由于这看起来像家庭作业,我将把剩下的留给你。
字符串文字的类型是字符串文字中char const[n]
的n
字符数,包括终止的空字符。但是请注意,您的问题的解决方案不是重载operator<<()
. 相反,您应该使用静态实时查看构造函数、析构函数和变量。