trivial
자명한 생성자(trivial constructor): 아무 일도 하지 않는 생성자
- 가상함수가 없다
- 부모가 없거나 부모의 생성자가 trivial 하다
- 객체형 멤버가 없거나 객체현 멤버의 생성자가 trivial 하다
- 사용자가 만든 생성자가 없다
생성자는 “trivial” 하다.
```cpp
#include
class Base {};
class A: public Base { Base b; public: virtual void foo(); };
int main() { // A 의 생성자는 trivial 한가? A p = (A)malloc(sizeof(A));
new(p) A; // p메모리에 대해 생성자 호출
// placement new
p->foo(); } ``` --- ```cpp #include <iostream> #include <type_traits>
// 모든 타입의 배열을 복사하는 strcpy() 의 일반화 버전을 만들어 보자
template
int main() { char s1[10] = “hello”; char s2[10];
copy_type(s2, s1, 10);
std::cout<<s2<<std::endl; // 복사 생성자가 하는 일이 없을때
// hello } ``` --- trivial traits 를 만드는 일반적인 기술은 어렵다 ```cpp #include <iostream>
// android frameworks 에서는
template
template<>
struct has_trivial_ctor
struct Point { int x, y; };
template<>
struct has_trivial_ctor
int main() {
if(has_trivial_ctor
댓글남기기