首页 > 编程语言 >C/C++实例汇集(1)

C/C++实例汇集(1)

时间:2024-12-13 21:09:52浏览次数:5  
标签:函数 派生类 int 基类 C++ 汇集 实例 printf

1、用代码判断一个系统是16位系统还是32位系统?

以下是几种常见编程语言中判断系统是 16 位还是 32 位的代码示例
C语言:

#include <stdio.h>
int main() {
    // 方法一:利用sizeof
    if (sizeof(int) == 2) {
        printf("16位系统\n");
    } else if (sizeof(int) == 4) {
        printf("32位系统\n");
    } else {
        printf("未知系统\n");
    }

    // 方法二:利用整数溢出
    int num = 32768;
    if (num > 32767) {
        printf("32位系统\n");
    } else {
        printf("16位系统\n");
    }

    // 方法三:对0取反
    unsigned int a = ~0;
    if (a > 65535) {
        printf("32位系统\n");
    } else {
        printf("16位系统\n");
    }

    return 0;
}

C++ 语言:

#include <iostream>
using namespace std;

int main() {
    // 方法一:利用sizeof
    if (sizeof(int) == 2) {
        cout << "16位系统\n";
    } else if (sizeof(int) == 4) {
        cout << "32位系统\n";
    } else {
        cout << "未知系统\n";
    }

    // 方法二:利用整数溢出
    int num = 32768;
    if (num > 32767) {
        cout << "32位系统\n";
    } else {
        cout << "16位系统\n";
    }

    // 方法三:对0取反
    unsigned int a = ~0;
    if (a > 65535) {
        cout << "32位系统\n";
    } else {
        cout << "16位系统\n";
    }

    // 方法四:使用预定义宏
#ifdef __x86_32__
    cout << "32位系统\n";
#elif defined __x86_16__
    cout << "16位系统\n";
#else
    cout << "未知系统\n";
#endif

    return 0;
}

2、C++的运行时多态是怎样的?

C++中的运行时多态是通过虚函数和基类指针/引用来实现的。这种多态允许你在父类中定义一个接口,然后在派生类中实现该接口,从而在程序运行时根据实际对象的类型调用相应的方法。下面是对运行时多态的详细解释和示例。
⑴基本概念
虚函数:在基类中使用virtual关键字声明的成员函数,允许派生类重写。
基类指针/引用:可以用来指向或引用派生类对象。
⑵实现步骤
定义基类:声明一个虚函数,这样它可以被派生类重写。
定义派生类:在派生类中重写虚函数。
使用基类指针或引用:创建基类指针或引用,并将其指向派生类对象。当调用虚函数时,会根据实际对象的类型进行动态绑定。
⑶示例代码

#include <iostream>

// 基类
class Base {
public:
    virtual void show() { // 声明为虚函数
        std::cout << "Base class show function called." << std::endl;
    }
    virtual ~Base() {} // 虚析构函数
};

// 派生类
class Derived : public Base {
public:
    void show() override { // 重写基类的虚函数
        std::cout << "Derived class show function called." << std::endl;
    }
};

int main() {
    Base* b;          // 基类指针
    Derived d;       // 派生类对象
    
    b = &d;          // 指向派生对象
    
    b->show();       // 动态绑定,根据实际对象类型调用方法
    return 0;
}

⑷输出结果
Derived class show function called.
⑸注意事项

虚析构函数:如果有任何可能会被继承的基类,最好将其析构函数声明为虚拟,以确保删除子对象时正确调用子对象的析构函数。

性能开销:使用运行时多态会引入一些性能开销,因为每次调用虚函数都需要查找相应的方法表(VTable)。

纯虚函数和抽象基类:如果一个基类只包含纯虚函数(即不提供实现),则该基类成为抽象基,不能直接实例化。在这种情况下,可以强制所有子级提供特定行为。

通过以上方式,C++能够实现灵活且强大的面向对象编程,使得程序设计更加模块化与可扩展。

标签:函数,派生类,int,基类,C++,汇集,实例,printf
From: https://www.cnblogs.com/citStudy/p/18605835

相关文章

  • vue——路由守卫beforeEach, 说明及实例问题
    一.说明导航守卫官方文档:在路由守卫中,只有next()是放行,其他的诸如:next('/login')、next(to)或者next({...to,replace:true})都不是放行,而是:中断当前导航,执行新的导航例1:beforeEach((to,from,next)=>{next('/login')}实际执行流程:beforeEach((to,fro......
  • C++哈希表
    哈希表教程目录哈希表是什么怎么用哈希表插入键值对查找元素删除元素遍历哈希表count检查是否存在某个键怎么用哈希表1.包含头文件首先,你需要包含unordered_map的头文件:#include<unordered_map>2.创建哈希表std::unordered_map<KeyType,ValueType>hashTableKey......
  • 在CodeBolcks+Windows API下的C++编程教程——给你的项目中添加资源文件和图标
    0.前言我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”:学习编程......
  • C++ 计算日期差
     #include<iostream>usingnamespacestd;//定义日期结构体,用于存放年、月、日这三个日期相关的信息structDate{intyear;intmonth;intday;};intmain(){Dated1,d2;//从标准输入(控制台)读取第一个日期的年、月、日信息cin>>d......
  • 深入计算机语言之C++:STL之list的模拟实现
    ......
  • C++_快慢指针在业务开发中的应用-数据结构与算法
    报错的解决vector不是模板问题,第一是由于没有添加#include<vector>。第二是需要添加命名空间。命名空间添加有两种,第一是直接在vector前面加上std::,第二是开头加入usingnamespacestd;加入vector后,std命名空间没有vector的问题--C++版本问题其他快慢下标......
  • guassdb华为OpenGauss高斯数据库间隔分区表自动创建分区sql实例
    命令行操作流程#切换用户su-omm#连接数据库gsql-dpostgres-p6432-r#选择数据库\cenv_demo#设置查询模式SETSEARCH_PATHTOpublic;sql模板1、预创建时间范围sql分区(非数据库自动创建分区)CREATETABLEt_metadata(idVARCHAR(36)NOTNULLPRIMA......
  • 9、C++继承
    1、继承1.1、认识继承继承一般发生在家族图谱、动植物分类等,注意关系要合理比如:        学生:姓名 年龄 身高 学生编号                  吃饭 睡觉 学习         老师:姓名 年龄 身高 教师编号          ......
  • c++类详解
    学习转自:c++类详解-CSDN博客1#include<iostream>2usingnamespacestd;34classCircle{5private:6doubleradius;78public:9//构造函数10Circle(doubler){11radius=r;12}1314//计算面积15doub......
  • 【C++】AVL树
    AVL树概念AVL树是最先发明的⾃平衡⼆叉查找树,AVL是⼀颗空树,或者具备下列性质的⼆叉搜索树:它的左右⼦树都是AVL树,且左右⼦树的⾼度差的绝对值不超过1。AVL树是⼀颗⾼度平衡搜索⼆叉树,通过控制⾼度差去控制平衡。AVL树得名于它的发明者G.M.Adelson-Velsky和E.M.Landis是......