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

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++能够实现灵活且强大的面向对象编程,使得程序设计更加模块化与可扩展。

posted @   gdyyx  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示