// C++
#pragma warning(disable: 4996)
#include <cstring>
#include <iostream>
using namespace std;
class String
{
private:
char* _chars;
public:
String(const char* chars)
: _chars(new char[strlen(chars) + 1])
{
strcpy(_chars, chars);
}
char& operator[](int index)
{
return _chars[index];
}
const char& operator[](int index) const
{
return _chars[index];
}
};
int main()
{
String s0("abc");
cout << s0[0] << endl;
s0[0] = 'b';
const String& s1 = s0;
cout << s1[0] << endl;
}
// C++
// const_cast
#pragma warning(disable: 4996)
#include <cstring>
#include <iostream>
using namespace std;
class String
{
private:
char* _chars;
public:
String(const char* chars)
: _chars(new char[strlen(chars) + 1])
{
strcpy(_chars, chars);
}
char& operator[](int index)
{
const String& s = *this;
const char& c = s[index];
return const_cast<char&>(c);
}
const char& operator[](int index) const
{
return _chars[index];
}
};
int main()
{
String s0("abc");
cout << s0[0] << endl;
s0[0] = 'b';
const String& s1 = s0;
cout << s1[0] << endl;
}
// C++
#include <iostream>
using namespace std;
int main()
{
int i = 1; // 비트 : 0000.0000.0000.0000.0000.0000.0000.0001
float* a = reinterpret_cast<float*>(&i); // 위 비트를 float 형식으로 재해석하겠다.
cout << *a << endl;
cout << FLT_TRUE_MIN << endl; // float이 표현할 수 있는 최솟값.
float b = i; // float으로 형변환 되어 b에 1이 복사.
cout << b << endl;
}
Output:
1.4013e-45
1.4013e-45
1