9;
int main()
{ f();
cout
f(){
::x = 8;
}
Используя операцию «::», получаем доступ к переменной х и меняем ее значение x = 8;
Используя операцию «::», получаем доступ к переменной х и меняем ее значение x = 8;
а равен 4294967271, почему?
Имеем «ромбовидное» наследование.
Класс А получает две копии класса D: один из класса В и один из класса С.
Чтобы исправить, нужно изменить объявления классов С и В (virtual).
«Использование foo неоднозначно»
// Outputs: "I'm eating generic food."
// Outputs: "I'm eating a rat.
// Outputs: "I'm eating generic food."
// Outputs: "I'm eating generic food."
cout<<"destruct B"<
cout<<"destruct A"<
Исправим:
class A
{ public:
A() {}
virtual ~A(){cout<<"destructor A"<
class B: public A
{ public:
B():A(){}
~B(){cout<<"destructor B"<
int main(void)
{ A* a = new B();
delete a;
}
//C++ code
extern "C"{
void func(int i);
void print(int i);
}
void myfunc(int i)
{ func(i);
print(i);
}
// error C3490: 'i' cannot be modified because it is being
//accessed through a const object
int main(){
base *p; //указатель на base
p=new derived();
delete p;
return 0;
}
virtual
from А
from А
from Base
Здесь важно отметить порядок уничтожения классов и то, как метод класса Base возвращается к своей реализации после удаления А.
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть