На странице 6 Эффективного C++ Scott Meyers определяется термин 'копия конструктора'. Я использовал книгу Schiltdt в качестве своей ссылки, и я не могу найти упоминание о конструкторах копии. Я получаю идею, но действительно ли это - стандартный компонент C++? Таких конструкторов вызовут когда передача класс значением?
Это никогда не будет очень быстро, так как у вас, вероятно, будет несколько промахов в кэше, вам придется либо перейти к одной матрице с большим шагом, либо к другой, не избежать этого. Проблема здесь в том, что компьютер любит, чтобы последовательные обращения к памяти были близки друг к другу, что в вашем алгоритме не является случаем индексации array_a пропусков по элементам высоты за один раз из-за члена высоты col . Чтобы исправить, что вы можете переключиться вокруг th для петель, но тогда у вас будет та же проблема с шириной (высота-1-ряд) член в array_b.
Вы можете переписать один из массивов в соответствии с порядком другого, но тогда у вас будет точно такая же проблема в коде, который переписывает, таким образом, это зависит от того, нужно ли вам делать такого рода вещи более одного раза на одних и тех же данных, если да, то имеет смысл сначала переписать одну из матриц, как Poita_ описано, иначе лучше оставить алгоритм как есть.
-121--3554039-Я не знаю, как делать флэш-взаимодействия (и мне также интересно), но для html/javascript можно использовать Kickenfoot .
И чтобы получить безголовый + скриптовый браузер, работающий на Linux, вы можете использовать Qt webkit library . Вот пример использования .
-121--1117543-Конструктор копирования имеет следующую форму:
class example
{
example(const example&)
{
// this is the copy constructor
}
}
В следующем примере показано, где он вызывается.
void foo(example x);
int main(void)
{
example x1; //normal ctor
example x2 = x1; // copy ctor
example x3(x2); // copy ctor
foo(x1); // calls the copy ctor to copy the argument for foo
}
Ссылка на часто задаваемые вопросы C ++, опубликованная ELI, и пост GBAcon является правильным.
Для явного ответа на вторую часть вашего вопроса: Да, когда вы передаете экземпляр объекта по значению, Copy Constructor будет использоваться для создания локального экземпляра объекта в объеме вызова функции. Каждый объект имеет «конструктор копирования по умолчанию» (GBAcon Aldudes к этому как «Compiler создал по умолчанию), который просто копирует каждый элемент объекта - это может быть не то, что вы хотите, например, если ваши объекты содержат указатели или ссылки, например.
Относительно хороших книг для (Re) обучения C ++ - я впервые узнал его почти два десятилетия назад, и с тех пор он изменил хорошую сделку, с тех пор - я рекомендую Брюсу Экель «Мышление в C ++» версиях 1 и 2, свободно доступным здесь (в Форма PDF, так и HTML):
Да, Copy Constructors, безусловно, является неотъемлемой частью стандарта C ++. Узнайте больше о них (и других конструкторов) здесь (FAQ C ++).
Если у вас есть книга C ++, которая не учит о скопированных конструкторах, выбросить ее. Это плохая книга.
См. Copy Constructor на Википедии.
Основная идея - конструкторы копирования создают новые экземпляры, копируя существующие:
class Foo {
public:
Foo(); // default constructor
Foo(const Foo& foo); // copy constructor
// ...
};
, учитывая экземпляр foo
, вызывают конструктор копирования с помощью
Foo bar(foo);
или
Foo bar = foo;
Стандартные контейнеры библиотеки шаблонов требуют объектов Чтобы быть копироваемым и присвоенным, поэтому, если вы хотите использовать STD :: Vector
, обязательно определите соответствующую конструктор копирования и Оператор =
, если компилятор по умолчанию Не имею смысл.