Вопросы с тегом «pointers»

99
Может ли указатель на базу указывать на массив производных объектов?

Сегодня я пришла на собеседование и мне задали этот интересный вопрос. Помимо утечки памяти и отсутствия виртуального dtor, почему этот код дает сбой? #include <iostream> //besides the obvious mem leak, why does this code crash? class Shape { public: virtual void draw() const = 0; }; class...

96
Как увеличить адрес указателя и значение указателя?

Допустим, int *p; int a = 100; p = &a; Что на самом деле будет делать следующий код и как? p++; ++p; ++*p; ++(*p); ++*(p); *p++; (*p)++; *(p)++; *++p; *(++p); Я знаю, что это немного запутанно с точки зрения кодирования, но я хочу знать, что на самом деле произойдет, когда мы будем кодировать...

95
Размещение звездочки в объявлениях указателей

Недавно я решил, что мне просто нужно наконец выучить C / C ++, и есть одна вещь, которую я действительно не понимаю в указателях или, точнее, в их определении. Как насчет этих примеров: int* test; int *test; int * test; int* test,test2; int *test,test2; int * test,test2; Теперь, насколько я...

95
Как вернуть интеллектуальные указатели (shared_ptr) по ссылке или по значению?

Допустим, у меня есть класс с методом, который возвращает shared_ptr. Каковы возможные преимущества и недостатки возврата по ссылке или по значению? Две возможные подсказки: Раннее разрушение объекта. Если я возвращаю shared_ptrссылку by (const), счетчик ссылок не увеличивается, поэтому я рискую...

94
В чем смысл указателей на функции?

Мне сложно увидеть полезность указателей на функции. Я предполагаю, что в некоторых случаях это может быть полезно (в конце концов, они существуют), но я не могу придумать случая, когда лучше или неизбежно использовать указатель на функцию. Не могли бы вы привести пример правильного использования...

94
Лямбда C ++ с захватами в качестве указателя на функцию

Я играл с лямбдами C ++ и их неявным преобразованием в указатели на функции. В моем начальном примере они использовались в качестве обратного вызова для функции ftw. Это работает, как ожидалось. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback =...

93
C # Хранение функций в словаре

Как мне создать словарь, в котором я могу хранить функции? Спасибо. У меня около 30+ функций, которые могут быть выполнены пользователем. Я хочу иметь возможность выполнять функцию следующим образом: private void functionName(arg1, arg2, arg3) { // code } dictionaryName.add("doSomething",...

93
Передача shared_ptr <Derived> как shared_ptr <Base>

Каков наилучший способ передать a shared_ptrпроизводного типа функции, которая принимает shared_ptra базового типа? Я обычно передаю shared_ptrs по ссылке, чтобы избежать ненужной копии: int foo(const shared_ptr<bar>& ptr); но это не сработает, если я попытаюсь сделать что-то вроде int...

92
Удаление указателя в C ++

Контекст: Я пытаюсь осмыслить указатели, мы видели их всего пару недель назад в школе, а сегодня, тренируясь, я наткнулся на глупца? проблема, это может быть очень просто для вас, но у меня практически нет опыта программирования. Я видел довольно много вопросов в SO об удалении указателей, но все...

91
Указатели проверки на валидность (C / C ++)

Есть ли способ определить (конечно, программно), является ли данный указатель «действительным»? Проверить значение NULL просто, но как насчет таких вещей, как 0x00001234? При попытке разыменовать указатель такого типа возникает исключение / сбой. Кроссплатформенный метод предпочтительнее, но...

91
Правильный способ объявления переменных-указателей в C / C ++ [закрыто]

В настоящее время этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, потребует дебатов, аргументов, опросов или расширенного обсуждения. Если вы считаете, что этот вопрос можно...

91
Что такое «толстый указатель» в Rust?

Я уже читал термин «толстый указатель» в нескольких контекстах, но я не уверен, что именно он означает и когда он используется в Rust. Указатель кажется вдвое больше обычного указателя, но я не понимаю почему. Это также имеет какое-то отношение к объектам-признакам....

90
Ссылки на диапазон вместо значений

Я видел, что этот диапазон возвращает ключ и «копию» значения. Есть ли способ вернуть адрес товара из этого диапазона? пример package main import "fmt" type MyType struct { field string } func main() { var array [10]MyType for _, e := range array { e.field = "foo" } for _, e := range array {...

90
Можно ли инициализировать указатель C значением NULL?

Я писал такие вещи, как char *x=NULL; в предположении, что char *x=2; создаст charуказатель на адрес 2. Но в The GNU C Programming Tutorial говорится, что int *my_int_ptr = 2;целочисленное значение сохраняется 2по любому случайному адресу, по которому my_int_ptrоно выделяется. Это может означать,...

89
Приведение указателя функции к другому типу

Скажем, у меня есть функция, которая принимает void (*)(void*)указатель на функцию для использования в качестве обратного вызова: void do_stuff(void (*callback_fp)(void*), void* callback_arg); Теперь, если у меня есть такая функция: void my_callback_function(struct my_struct* arg); Могу ли я...

89
Указатель функции на функцию-член

Я хотел бы настроить указатель на функцию как член класса, который является указателем на другую функцию в том же классе. Причины, по которым я это делаю, сложны. В этом примере я хотел бы, чтобы результат был «1» class A { public: int f(); int (*x)(); } int A::f() { return 1; } int main() { A a;...