Size: a a a

2021 February 23

AM

Aleksander Mironov in supapro.cxx
Ilia Zviagin
Можно
У меня так себе получилось =)

template<typename T> class Base {
  protected:
     int A = 0;
}

template<typename T> class Child : virtual public Base<T>{
 
   Child(int i) : Base()
   {
        A = i;  << Ошибка - A не существует
   }
}

За синтаксис не ручаюсь сейчас. Вроде так было. A разве использовалось не в конструкторе.
источник

MK

Mikhail Kalugin in supapro.cxx
Alex Menzfolder
Может я тему с литералами проебал, а может и нет.

Но, объясните мне смысл. Толку использовать литералы после инициализации перменной уже, как *константу*?

Вот, конкретный пример :

float A = 0.5;
cout << "A = 0.5 " << sizeof(A) << endl;
float B = 0.5F;
cout << "B = 0.5 " << sizeof(B) << endl;

Обе эти переменные будут иметь фиксированный размер на 64 битной машине в 4б
Честно, говоря, дич какая-то написана...
источник

IZ

Ilia Zviagin in supapro.cxx
Gena Gore In
Попытался замерить время работы copy и copy_n на векторах с интами. Вышло, что copy_n быстрее. Это правда или я что-то сделал не так?
Сделал что-то не так.
Вообще, с какого перепуга тебя это волнует?
источник

IZ

Ilia Zviagin in supapro.cxx
Aleksander Mironov
У меня так себе получилось =)

template<typename T> class Base {
  protected:
     int A = 0;
}

template<typename T> class Child : virtual public Base<T>{
 
   Child(int i) : Base()
   {
        A = i;  << Ошибка - A не существует
   }
}

За синтаксис не ручаюсь сейчас. Вроде так было. A разве использовалось не в конструкторе.
Ну в сказки мы не верим, так что давай точный код
источник

IZ

Ilia Zviagin in supapro.cxx
Mikhail Kalugin
Честно, говоря, дич какая-то написана...
А чего дичь - ничего неправильно не написано
источник

MK

Mikhail Kalugin in supapro.cxx
Alex Menzfolder
Может я тему с литералами проебал, а может и нет.

Но, объясните мне смысл. Толку использовать литералы после инициализации перменной уже, как *константу*?

Вот, конкретный пример :

float A = 0.5;
cout << "A = 0.5 " << sizeof(A) << endl;
float B = 0.5F;
cout << "B = 0.5 " << sizeof(B) << endl;

Обе эти переменные будут иметь фиксированный размер на 64 битной машине в 4б
В общем, ни кто не гарантирует, что float именно 64 бита (может быть и 32, и часто, так оно и есть) и что-по умолчанию число с плавающий точкой float - в первом случае ты пишешь: «вот у меня есть переменная типа float, запиши в нее число с плавающей точкой». Во втором случае ты говоришь: «вот переменная типа float, запиши в нее число типа float». Ежу понятно, размер обоих переменных будет соответствовать размеру float платформы
источник

АВ

Александр Водянников... in supapro.cxx
Не в тему чата, но - ВСЕХ МУЖИКОВ с праздником !!!
источник

AM

Aleksander Mironov in supapro.cxx
Ilia Zviagin
Ну в сказки мы не верим, так что давай точный код
template <typename T> class Aclass
{
protected:
 int A;

public:
 Aclass() {}
 
};

template <typename T> class Bclass : virtual public Aclass<T>
{
 Bclass() {  
   A = 1;
 }
};
источник

IZ

Ilia Zviagin in supapro.cxx
Mikhail Kalugin
В общем, ни кто не гарантирует, что float именно 64 бита (может быть и 32, и часто, так оно и есть) и что-по умолчанию число с плавающий точкой float - в первом случае ты пишешь: «вот у меня есть переменная типа float, запиши в нее число с плавающей точкой». Во втором случае ты говоришь: «вот переменная типа float, запиши в нее число типа float». Ежу понятно, размер обоих переменных будет соответствовать размеру float платформы
В первом записывается double
источник

IZ

Ilia Zviagin in supapro.cxx
Aleksander Mironov
template <typename T> class Aclass
{
protected:
 int A;

public:
 Aclass() {}
 
};

template <typename T> class Bclass : virtual public Aclass<T>
{
 Bclass() {  
   A = 1;
 }
};
И ?
источник

AM

Aleksander Mironov in supapro.cxx
Ошибка на присвоении А
источник

AM

Aleksander Mironov in supapro.cxx
В голдболте повторяется.
источник

IZ

Ilia Zviagin in supapro.cxx
Alex Menzfolder
Может я тему с литералами проебал, а может и нет.

Но, объясните мне смысл. Толку использовать литералы после инициализации перменной уже, как *константу*?

Вот, конкретный пример :

float A = 0.5;
cout << "A = 0.5 " << sizeof(A) << endl;
float B = 0.5F;
cout << "B = 0.5 " << sizeof(B) << endl;

Обе эти переменные будут иметь фиксированный размер на 64 битной машине в 4б
Вопрос переформулируй
источник

IZ

Ilia Zviagin in supapro.cxx
Aleksander Mironov
В голдболте повторяется.
Ну так ссылку давай
источник

AM

Aleksander Mironov in supapro.cxx
Aleksander Mironov
template <typename T> class Aclass
{
protected:
 int A;

public:
 Aclass() {}
 
};

template <typename T> class Bclass : virtual public Aclass<T>
{
 Bclass() {  
   A = 1;
 }
};
Нашел ошибку. Надо скоуп явно указывать, а я когда тыркался, забыл параметры шаблона указать.

Получается, с обычным наследованием не надо, а с шаблонами надо?
источник

AM

Aleksander Mironov in supapro.cxx
Bclass() {  
   Aclass<T>::A = 1;   // Работает
 }

Bclass() {  
   A = 1;   // Ошибка
 }
источник

WC

Working Horse Close ... in supapro.cxx
Хочу освежить память. Есть какая-нибудь книжка о с++?
Раздражают книги для "новичков", будто никого другого нет в IT
источник

С

Сергей in supapro.cxx
Working Horse Close to light speed
Хочу освежить память. Есть какая-нибудь книжка о с++?
Раздражают книги для "новичков", будто никого другого нет в IT
ну вот например. вполне не для новичков.
источник

AM

Aleksander Mironov in supapro.cxx
Продолжаю веселится с наследованием =\

Возможно ли в ромбовидном наследовании,  из конечного наследника A вызвать метод базового класса D?
Вроде сделал по феншую (В классах B и С указал D как виртуальный, а в A его явно сконструировал),
но при попытке
A_object.D_Method()
пишет Ambiguous

https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Diamond_inheritance.svg/440px-Diamond_inheritance.svg.png
источник

ᅠOrest in supapro.cxx
Привет. Как я могу через cin указать const char* value?
источник