﻿1
00:00:04,350 --> 00:00:05,430
‫Olá e bem-vindo.

2
00:00:05,430 --> 00:00:10,620
‫Nesta palestra, aprenderemos como podemos acessar o que está do outro lado

3
00:00:10,620 --> 00:00:17,700
‫de um ponteiro para que nosso componente movedor possa obter propriedades do ator em que vive, como

4
00:00:17,700 --> 00:00:21,750
‫obter o nome do ator ou obtendo sua localização.

5
00:00:21,750 --> 00:00:23,940
‫Vamos mergulhar e ver como podemos fazer isso.

6
00:00:24,660 --> 00:00:29,700
‫Portanto, é muito bom poder obter um ponteiro ou obter o endereço de um ator.

7
00:00:29,700 --> 00:00:33,420
‫Mas precisamos ser capazes de fazer coisas com o próprio ator.

8
00:00:34,110 --> 00:00:39,450
‫E o processo para fazer isso é um pouco complicado de entender se olharmos apenas para o ator.

9
00:00:39,750 --> 00:00:47,190
‫Então, vamos dar uma olhada em alguns ponteiros para floats aqui dentro dos componentes de tecnologia.

10
00:00:47,580 --> 00:00:54,150
‫Então vamos começar criando um float, que vamos chamar de meu float e definir isso para um valor de

11
00:00:54,150 --> 00:00:54,690
‫cinco.

12
00:00:55,530 --> 00:01:01,650
‫Então vamos criar um ponteiro float, que vou chamar de seu float, e

13
00:01:01,650 --> 00:01:06,060
‫vamos defini-lo como o endereço do meu float.

14
00:01:06,720 --> 00:01:09,840
‫Portanto, ambos estão apontando para o mesmo endereço na memória.

15
00:01:09,840 --> 00:01:16,980
‫A diferença é que seu float é um endereço, então não posso simplesmente imprimir o valor.

16
00:01:16,980 --> 00:01:28,650
‫Então, se eu quiser fazer um u log e quiser dizer que o valor do seu float é igual a porcentagem F, então eu coloco

17
00:01:28,650 --> 00:01:29,910
‫seu float.

18
00:01:29,910 --> 00:01:35,820
‫Isso não vai funcionar porque seu float é um ponteiro, não um float real.

19
00:01:36,690 --> 00:01:40,770
‫Então, o que precisamos fazer é essencialmente.

20
00:01:41,900 --> 00:01:44,690
‫Obtenha o valor nesse local.

21
00:01:45,380 --> 00:01:51,560
‫Então, a maneira como podemos fazer isso, se eu fosse armazená-la em uma nova variável float chamada float value,

22
00:01:51,560 --> 00:01:56,510
‫então eu usaria o operador de referência D, que na verdade também é uma estrela.

23
00:01:56,900 --> 00:02:00,650
‫E colocamos isso antes da coisa que queremos fazer referência.

24
00:02:00,650 --> 00:02:04,490
‫Então, damos a ele um ponteiro para a referência D, que neste caso é o seu float.

25
00:02:05,120 --> 00:02:09,920
‫Agora é um pouco estranho que usemos essas estrelas em dois contextos diferentes.

26
00:02:09,920 --> 00:02:15,740
‫Então, estamos usando a estrela após o tipo que nos diz que é um ponteiro flutuante.

27
00:02:16,160 --> 00:02:22,190
‫E quando você está usando com um tipo, significa que é um ponteiro quando você usa uma estrela antes de uma expressão

28
00:02:22,190 --> 00:02:23,000
‫de ponteiro.

29
00:02:23,390 --> 00:02:27,830
‫O que você está fazendo é dizer, me dê o valor neste local.

30
00:02:28,400 --> 00:02:33,020
‫Então, isso obtém o valor e o copia para o valor flutuante e agora o valor flutuante.

31
00:02:33,260 --> 00:02:36,470
‫Podemos imprimir assim.

32
00:02:36,690 --> 00:02:42,020
‫Então, com todas essas contorções, vamos em frente e compilá-lo e ver e ação como hit play.

33
00:02:42,260 --> 00:02:47,900
‫E com certeza, está dizendo que seu valor float é cinco, que é o valor que tínhamos originalmente.

34
00:02:48,890 --> 00:02:53,570
‫Agora, geralmente não armazenamos o valor intermediário em uma variável porque isso é um desperdício.

35
00:02:53,570 --> 00:02:55,460
‫É criar uma cópia que não precisamos.

36
00:02:55,730 --> 00:03:00,770
‫Então, o que podemos fazer é usar isso diretamente na expressão onde precisamos.

37
00:03:00,770 --> 00:03:05,300
‫Então seu valor float seria estrela, seu float assim.

38
00:03:05,840 --> 00:03:10,910
‫E isso vai funcionar exatamente da mesma maneira, exceto que desta vez não faz uma cópia em uma variável

39
00:03:10,910 --> 00:03:11,420
‫desnecessária.

40
00:03:11,690 --> 00:03:16,410
‫Agora suponha que queremos obter o nome do ator proprietário aqui.

41
00:03:16,430 --> 00:03:23,400
‫Bem, do jeito que faríamos isso, vamos remover essas coisas que estávamos fazendo com os carros alegóricos é que

42
00:03:23,600 --> 00:03:25,460
‫faríamos referência a um ponteiro.

43
00:03:25,460 --> 00:03:29,570
‫Então nós fazemos o dono da estrela que realmente nos leva ao próprio ator.

44
00:03:29,900 --> 00:03:36,630
‫Então podemos colocar um par de colchetes ao redor do dono e então podemos fazer um ponto.

45
00:03:37,010 --> 00:03:40,760
‫Então tiramos o ator dessa expressão.

46
00:03:40,970 --> 00:03:48,650
‫Agora podemos usar um ponto para obter algo de dentro do ator para que possamos obter ator, nome

47
00:03:48,650 --> 00:03:56,990
‫ou rótulo, que retornará como uma string para que possamos fazer com que o nome da string seja igual a

48
00:03:56,990 --> 00:04:07,700
‫isso e, em seguida, possamos imprimir o movimento ona percent s e, em vez de usar o proprietário aqui, vamos iniciar o nome e trazer isso.

49
00:04:07,700 --> 00:04:10,400
‫Precisamos colocar a estrela na frente de um nome.

50
00:04:10,400 --> 00:04:13,070
‫Esse é mais um uso para esse operador estelar.

51
00:04:13,310 --> 00:04:15,170
‫Já encontramos três deles.

52
00:04:15,170 --> 00:04:16,520
‫Um é com esta corda.

53
00:04:16,730 --> 00:04:17,990
‫É a primeira vez que o vemos.

54
00:04:17,990 --> 00:04:23,180
‫Então está aqui com o tipo e também está aqui para DE referenciando muitos e muitos usos para

55
00:04:23,180 --> 00:04:24,410
‫exatamente o mesmo caractere.

56
00:04:24,890 --> 00:04:26,780
‫Mas é assim com C++.

57
00:04:27,080 --> 00:04:28,880
‫Vamos experimentar e apertar o play.

58
00:04:29,750 --> 00:04:35,120
‫E agora você pode ver que está imprimindo o nome dos atores aos quais o filme está ligado.

59
00:04:35,120 --> 00:04:42,200
‫Então, passamos por esse ponteiro com o operador de referência D e conseguimos chamar uma função

60
00:04:42,530 --> 00:04:44,480
‫em um objeto diferente.

61
00:04:44,630 --> 00:04:50,720
‫Agora, na verdade, existe uma sintaxe muito mais compacta para fazer isso porque é muito comum querermos

62
00:04:50,720 --> 00:04:59,030
‫obter uma função ou propriedade de um objeto de ponteiro em vez de ter que fazer isso com os parênteses e o operador de

63
00:04:59,030 --> 00:05:02,360
‫referência de estado, podemos mesclar tudo isso em 1.

64
00:05:02,360 --> 00:05:09,320
‫Podemos remover tudo isso ou mover o ponto e, em vez disso, usamos esse operador de seta para que a seta do proprietário obtenha o ator, o

65
00:05:09,560 --> 00:05:14,720
‫nome ou o rótulo e isso faça exatamente a mesma coisa, exceto que é muito mais fácil de escrever.

66
00:05:15,050 --> 00:05:21,620
‫Então, de um modo geral, acabará com a regra em que, se tivermos um ponteiro, usamos o operador de seta.

67
00:05:21,620 --> 00:05:29,090
‫Se estivermos usando uma estrutura como uma string F ou um vetor F, usamos o operador ponto.

68
00:05:29,510 --> 00:05:36,740
‫Então eu gostaria que você imprimisse a localização dos atores usando esse novo conhecimento de como podemos usar ponteiros.

69
00:05:37,160 --> 00:05:40,700
‫Então eu gostaria que você ligasse para obter a localização do ator.

70
00:05:40,700 --> 00:05:46,820
‫Você usará o operador de seta para examinar o ponteiro e chamar essa função no

71
00:05:46,820 --> 00:05:47,270
‫objeto.

72
00:05:47,270 --> 00:05:51,380
‫Na outra extremidade, você armazenará o vetor F que resulta disso.

73
00:05:51,380 --> 00:06:00,770
‫Então você vai chamar duas strings compactas para armazenar o resultado em uma nova variável de string e imprimir isso

74
00:06:00,770 --> 00:06:01,760
‫no log.

75
00:06:02,210 --> 00:06:03,980
‫Pause o vídeo e vá em frente.

76
00:06:07,430 --> 00:06:07,850
‫OK.

77
00:06:07,850 --> 00:06:08,570
‫Bem vindo de volta.

78
00:06:08,900 --> 00:06:23,060
‫Então, vou criar um novo vetor F chamado local do proprietário e vou fazer a seta do proprietário, obter a localização do

79
00:06:23,750 --> 00:06:24,620
‫ator.

80
00:06:24,950 --> 00:06:27,620
‫Então eu vou converter isso em uma string.

81
00:06:27,620 --> 00:06:35,540
‫Então, eu vou ter uma string X chamada string de localização do proprietário, e isso será

82
00:06:35,540 --> 00:06:41,870
‫igual ao ponto de localização do proprietário para compactar a string assim.

83
00:06:42,080 --> 00:06:42,710
‫Pode deixar.

84
00:06:42,710 --> 00:06:44,990
‫Então agora temos nossa própria string de localização.

85
00:06:44,990 --> 00:06:46,820
‫Podemos imprimir isso no log.

86
00:06:46,820 --> 00:06:57,230
‫Eu vou dizer que o dono da mudança é este com localização por cento s e que por cento s nós vamos ter

87
00:06:57,230 --> 00:07:06,890
‫outra string de localização do dono da estrela assim e então aperta control alt f 11 e nós vamos em frente

88
00:07:06,890 --> 00:07:15,110
‫e apertamos play e eles go, temos tanto o nome do ator quanto sua localização impressas como uma

89
00:07:15,110 --> 00:07:15,680
‫string.

90
00:07:15,890 --> 00:07:21,710
‫Portanto, agora podemos ver o poder de ter ponteiros e poder chamar funções em pontos,

91
00:07:21,710 --> 00:07:28,370
‫pois nos permite comunicar entre diferentes instâncias de classes e fazer com que os objetos sejam muito mais úteis.

92
00:07:28,460 --> 00:07:30,050
‫Vejo você na próxima palestra.

