Почему я не вижу неявно сгенерированных функций членов в таблице символовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему я не вижу неявно сгенерированных функций членов в таблице символов

Сообщение Anonymous »

Почему я не вижу неявно сгенерированных конструкторов/destructor/etc в таблице символов для моего кода C ++?

Код: Выделить всё

#include 

class Foo
{
public:
Foo (int N) : values {new int[N]}{
for (int i = 0; i < N; i++) {
values[i]=2*i;
}
};

private:
int *values;
};

int main()
{
Foo A {20};
Foo B {A};
Foo C {std::move(A)};

return 0;
}
< /code>
так что если я собираюсь и делаю
 nm -C a.out | grep Foo< /code>
я просто см. < /p>
00000000000011b8 W Foo::Foo(int)
00000000000011b8 W Foo::Foo(int)
000000000000122a W std::remove_reference::type&& std::move(Foo&)
< /code>
Если я изменяю класс, чтобы включить, например, < /p>
Foo(const Foo&)=default;
< /code>
Тогда полученный выход из NM одинаковы. В то время как если я сделаю < /p>
Foo(const Foo&){};
< /code>
Тогда я получаю < /p>
00000000000011ce W Foo::Foo(int)
0000000000001240 W Foo::Foo(Foo const&)
00000000000011ce W Foo::Foo(int)
0000000000001240 W Foo::Foo(Foo const&)
000000000000124f W std::remove_reference::type&& std::move(Foo&)
Я ожидал, что неявно сгенерированные версии по умолчанию будут видны в таблице символов

Подробнее здесь: https://stackoverflow.com/questions/794 ... mbol-table
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»