在复制构造函数中无法输出char数组
myclass.h
#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass
{
char str[4];
public:
MyClass();
MyClass(const MyClass &temp);
~MyClass();
void Show();
char operator[](int idx);
};
#endif // MYCLASS_H
#include <iostream>
#include "myclass.h"
using std::cout;
using std::endl;
MyClass::MyClass()
{
str[0] = 'A';
str[1] = 'B';
str[2] = 'C';
str[3] = 'D';
cout << "Create" << endl;
}
MyClass::MyClass(const MyClass &temp)
{
cout << "Create2" << endl;
cout << temp[1] << endl; // 二进制“[”: 没有找到接受“const MyClass”类型的左操作数的运算符(或没有可接受的转换)
}
MyClass::~MyClass()
{
cout << "Destory" << endl;
}
void MyClass::Show()
{
cout << str << endl;
}
char MyClass::operator [](int idx)
{
return str[idx];
}
#include <iostream>
#include "myclass.h"
using namespace std;
int main()
{
MyClass o;
cout << o[1] << endl; // 这里却可以
system("pause");
return 0;
}