国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison développement back-end C++ Orienté objet en C? Implémentation d'interfaces à partir de zéro

Orienté objet en C? Implémentation d'interfaces à partir de zéro

Apr 03, 2025 pm 08:21 PM
C ai switch typedef 2025

Orienté objet en C? Implémentation d'interfaces à partir de zéro

Cet article explique comment simuler le concept d'interfaces dans la programmation orientée objet dans le langage C. Nous prendrons le calcul des prix des véhicules à titre d'exemple, les implémenterons respectivement dans les langues Java et C, comparer les différences entre les deux langues et montrer comment implémenter les fonctions de base de l'interface dans C.

Implémentation Java:

Dans Java, interface est définie à l'aide du mot-clé d'interface et les classes implémentent les interfaces via implements . L'exemple de code est le suivant:

 <code class="java">interface Vehicle { int price(); } class Car implements Vehicle { private final int speed; public Car(int speed) { this.speed = speed; } @Override public int price() { return speed * 60; } } class Motorcycle implements Vehicle { private final int cc; public Motorcycle(int cc) { this.cc = cc; } @Override public int price() { return cc * 10; } } public class Main { public static void printVehiclePrice(Vehicle vehicle) { System.out.println("$" vehicle.price() ".00"); } public static void main(String[] args) { Car car = new Car(120); Motorcycle motorcycle = new Motorcycle(1000); printVehiclePrice(car); printVehiclePrice(motorcycle); } }</code>

C Implémentation de la langue C:

Il n'y a pas de mécanisme d'interface direct dans le langage C. Nous pouvons simuler le comportement d'une interface en énumérant les types, les structures et les pointeurs de fonction.

Définissez d'abord le type d'énumération pour représenter le type de véhicule:

 <code class="c">typedef enum { VEHICLE_CAR, VEHICLE_MOTORCYCLE } VehicleType;</code>

Définissez ensuite la structure du véhicule, y compris les informations de type et les pointeurs de fonction:

 <code class="c">typedef struct { VehicleType type; int (*price)(void*); // 函數(shù)指針,指向價(jià)格計(jì)算函數(shù)} Vehicle;</code>

Ensuite, réalisez la structure de l'automobile et de la moto:

 <code class="c">typedef struct { VehicleType type; int speed; } Car; typedef struct { VehicleType type; int cc; } Motorcycle;</code>

Les fonctions d'initialisation et de calcul des prix correspondantes:

 <code class="c">Car* car_init(int speed) { Car* car = malloc(sizeof(Car)); car->type = VEHICLE_CAR; car->speed = speed; return car; } int car_price(void* car) { return ((Car*)car)->speed * 60; } Motorcycle* motorcycle_init(int cc) { Motorcycle* motorcycle = malloc(sizeof(Motorcycle)); motorcycle->type = VEHICLE_MOTORCYCLE; motorcycle->cc = cc; return motorcycle; } int motorcycle_price(void* motorcycle) { return ((Motorcycle*)motorcycle)->cc * 10; }</code>

Enfin, implémentez la fonction vehicle_price et appelez différentes fonctions de calcul des prix en fonction du type de véhicule:

 <code class="c">int vehicle_price(Vehicle* vehicle) { switch (vehicle->type) { case VEHICLE_CAR: return car_price((Car*)vehicle); case VEHICLE_MOTORCYCLE: return motorcycle_price((Motorcycle*)vehicle); default: return 0; } } void print_vehicle_price(Vehicle* vehicle) { printf("$%d.00\n", vehicle_price(vehicle)); } int main() { Vehicle car_v = {VEHICLE_CAR, car_price}; ((Car*)&car_v)->speed = 120; // 強(qiáng)制類型轉(zhuǎn)換Vehicle motorcycle_v = {VEHICLE_MOTORCYCLE, motorcycle_price}; ((Motorcycle*)&motorcycle_v)->cc = 1000; // 強(qiáng)制類型轉(zhuǎn)換print_vehicle_price(&car_v); print_vehicle_price(&motorcycle_v); free((Car*)&car_v); free((Motorcycle*)&motorcycle_v); return 0; }</code>

Cette implémentation du langage C simule le comportement des interfaces, mais nécessite une gestion manuelle de la mémoire et de la conversion de type, ce qui est plus complexe que le mécanisme d'interface de Java. Cette approche améliore la maintenabilité et la lisibilité du code lorsqu'ils traitent des structures de données complexes, telles que les arbres de syntaxe abstraits (AST).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La popularité du cercle des devises est revenue, pourquoi les gens intelligents ont-ils commencé à augmenter tranquillement leurs positions? Regardez la tendance des données sur la cha?ne et saisissez le prochain cycle de mot de passe de richesse! La popularité du cercle des devises est revenue, pourquoi les gens intelligents ont-ils commencé à augmenter tranquillement leurs positions? Regardez la tendance des données sur la cha?ne et saisissez le prochain cycle de mot de passe de richesse! Jul 09, 2025 pm 08:30 PM

Au fur et à mesure que les conditions du marché accélèrent, de plus en plus d'investisseurs intelligents ont commencé à augmenter tranquillement leurs positions dans le cercle des devises. Beaucoup de gens se demandent ce qui les fait prendre de manière décisive lorsque la plupart des gens attendent et voient? Cet article analysera les tendances actuelles à travers des données sur la cha?ne pour aider les lecteurs à comprendre la logique des fonds intelligents, afin de mieux saisir la prochaine série de possibilités de croissance potentielle de la richesse.

Quelles sont les cha?nes publiques traditionnelles des crypto-monnaies? Les dix premiers classements des cha?nes publiques traditionnelles de la crypto-monnaie en 2025 Quelles sont les cha?nes publiques traditionnelles des crypto-monnaies? Les dix premiers classements des cha?nes publiques traditionnelles de la crypto-monnaie en 2025 Jul 10, 2025 pm 08:21 PM

Le modèle dans le champ de la cha?ne publique montre une tendance de "un super, beaucoup de forts et une centaine de fleurs fleurissant". Ethereum mène toujours avec ses douves écologiques, tandis que Solana, Avalanche et d'autres sont difficiles à affronter les performances. Pendant ce temps, Polkadot, Cosmos, qui se concentre sur l'interopérabilité, et ChainLink, qui est une infrastructure critique, forment une image future de plusieurs cha?nes coexistant. Pour les utilisateurs et les développeurs, le choix de la plate-forme n'est plus un seul choix, mais nécessite un compromis entre les performances, le co?t, la sécurité et la maturité écologique basée sur des besoins spécifiques.

Le bitcoin brise de nouveaux sommets, Dogecoin rebondit fortement, Ethereum suivra le rythme Le bitcoin brise de nouveaux sommets, Dogecoin rebondit fortement, Ethereum suivra le rythme Jul 09, 2025 pm 08:24 PM

Récemment, Bitcoin a frappé un nouveau sommet, Dogecoin a inauguré un fort rebond et le marché était chaud. Ensuite, nous analyserons les moteurs du marché et les aspects techniques pour déterminer si Ethereum a toujours des opportunités de suivre la montée.

Il y a trop d'histoires calomnieuses dans le cercle des devises? Comprenez la logique clé et les secrets de contr?le des risques dans un article! Il y a trop d'histoires calomnieuses dans le cercle des devises? Comprenez la logique clé et les secrets de contr?le des risques dans un article! Jul 09, 2025 pm 08:33 PM

Le cercle des devises semble avoir un seuil bas, mais en fait, il cache de nombreux termes et logique complexe. De nombreux novices "se précipitent sur le marché" dans la confusion et finissent par perdre de l'argent. Cet article donnera une explication complète des termes communs dans le cercle des devises, la logique opérationnelle des fabricants d'argent réel et les stratégies pratiques de contr?le des risques pour aider les lecteurs à clarifier leurs idées et à réduire les risques d'investissement.

L'évolution du contrat intelligent de Cardano: l'impact des mises à niveau d'Alonzo en 2025 L'évolution du contrat intelligent de Cardano: l'impact des mises à niveau d'Alonzo en 2025 Jul 10, 2025 pm 07:36 PM

La mise à niveau de Fork Hard Fork de Cardano a réussi à transformer Cardano d'un réseau de transfert de valeur vers une plate-forme de contrat intelligent entièrement fonctionnel en introduisant la plate-forme de contrat intelligent Plutus. 1. Plutus est basé sur le langage Haskell, avec des fonctionnalités puissantes, une sécurité améliorée et un modèle de co?t prévisible; 2. Après la mise à niveau, le déploiement DAPPS est accéléré, la communauté des développeurs est élargie et les écosystèmes Defi et NFT se développent rapidement; 3. En 2025, l'écosystème de Cardano sera plus mature et diversifié. Combinée à l'amélioration de l'évolutivité à l'ère Basho, à l'amélioration de l'interopérabilité transversale, à l'évolution de la gouvernance décentralisée à l'ère Voltaire et à la promotion de l'adoption générale par les applications au niveau de l'entreprise, Cardano a

Qui émet des stablecoins? Quelles sont les stablecoins? Qui émet des stablecoins? Quelles sont les stablecoins? Jul 09, 2025 pm 06:24 PM

Les stablecoins sont des actifs cryptographiques qui maintiennent la stabilité des prix en ancrant les monnaies fiduciaires telles que le dollar américain. Ils sont principalement divisés en trois catégories: garantie de monnaie fiduciaire, garantie des actifs cryptographiques et stablecoins algorithmiques. 1. L'USDT est émis par Tether et est le stablecoin avec la plus grande valeur marchande et la liquidité la plus élevée. 2. USDC est publié par la Center Alliance lancée par Circle and Coinbase, et est connue pour sa transparence et sa conformité. 3. Dai est généré par Makerdao par une sur-collatéralisation des actifs cryptographiques et est la devise centrale dans le champ Defi. 4. Busd a été lancé en partenariat avec Paxos et est réglementé par les états-Unis mais a été interrompu. 5. TUSD atteint une vérification élevée de réserve de transparence via des comptes d'entiercement tiers. Les utilisateurs peuvent utiliser des échanges centralisés tels que Binance, Ouyi et Huobi

Menant le classement top 20 de jetons sur le marché de la cryptographie 2025 (dernière mise à jour) Menant le classement top 20 de jetons sur le marché de la cryptographie 2025 (dernière mise à jour) Jul 10, 2025 pm 08:48 PM

Les 20 principaux actifs de cryptographie les plus prometteurs en 2025 comprennent BTC, ETH, SOL, etc., couvrant principalement plusieurs pistes telles que les cha?nes publiques, la couche 2, l'IA, le défi et les jeux. 1.BTC continue de diriger le marché avec ses propriétés numériques en métal jaune et sa vulgarisation des ETF; 2.eth consolide l'écosystème en raison de son statut et de sa mise à niveau des plates-formes de contrat intelligentes; 3.Sol se démarque avec des cha?nes publiques et des communautés de développeurs hautes performances; 4.Link est le leader d'Oracle Connectation de données réelles; 5.RNDR construit les besoins décentralisés du service de réseau GPU AI; 6.IMX se concentre sur les jeux Web3 pour fournir un environnement sans gaz zéro; 7.Reb mène avec la technologie de la couche 2 mature et l'énorme écosystème Defi; 8.Matic est devenu la couche de valeur d'Ethereum à travers l'évolution multi-cha?ne

Comparaison des différences et des avantages et des inconvénients des USDC, DAI et TUSD (récemment mis à jour) Comparaison des différences et des avantages et des inconvénients des USDC, DAI et TUSD (récemment mis à jour) Jul 10, 2025 pm 09:09 PM

La différence de base entre l'USDC, le DAI et le TUSD réside dans le mécanisme d'émission, les actifs collatéraux et les caractéristiques du risque. 1. L'USDC est un stablecoin centralisé émis par Circle et est garanti par des obligations de trésorerie en espèces et à court terme. Ses avantages sont la conformité et les liquidités transparentes, fortes et une stabilité élevée, mais il existe un risque d'examen centralisé et de défaillance ponctuelle; 2. Dai est une stablecoin décentralisée, générée par le protocole Makerdao, et la garantie est un atout crypto. Il présente les avantages de l'anti-censure, de la transparence sur la cha?ne et sans autorisation, mais il fait également face à des risques systémiques, à la dépendance à l'égard des actifs centralisés et des problèmes de complexité; 3. TUSD est un stablecoin centralisé, mettant l'accent sur la preuve de réserve en ligne en temps réel, fournissant une vérification de transparence de fréquence plus élevée, mais a une petite part de marché et une faible liquidité. Les trois sont des types de garantie et une décentralisation

See all articles