C++每日二题(7)

论坛 期权论坛 期权     
每日二题   2019-7-21 05:46   2745   0
2019年7月20日整理发布
[h2]
  1. 1.初始化和赋值的区别
复制代码
[/h2]
  • 对于简单类型来说,初始化和赋值没什么区别
  • 对于类和复杂数据类型来说,这两者的区别就大了,举例如下:
class A{public:    int num1;    int num2;public:    A(int a=0, int b=0):num1(a),num2(b){};    A(const A& a){};
   //重载=号操作符函数
    A& operator=(const A& a){        num1 = a.num1 + 1;        num2 = a.num2 + 1;        return *this;    };};int main(){    A a(1,1);    A a1 = a; //拷贝初始化操作,调用拷贝构造函数    A b;    b = a;//赋值操作,对象a中,num1 = 1,num2 = 1;对象b中,num1 = 2,num2 = 2    return 0;}[h2]
  1. 2.extern"C"的用法
复制代码
[/h2]
  • 为了能够正确的在C++代码中调用C语言的代码;在程序中加上extern "C"后,相当于告诉编译器这部分代码是C语言写的,因此要按照C语言进行编译,而不是C++;
  • 哪些情况下使用extern "C":
    (1)C++代码中调用C语言代码;
    (2)在多个人协同开发时,可能有人擅长C语言,而有人擅长C++;
举个例子,C++中调用C代码:
#ifndef __MY_HANDLE_H__#define __MY_HANDLE_H__extern "C"
{
    typedef unsigned int result_t;    typedef void* my_handle_t;        my_handle_t create_handle(const char* name);    result_t operate_on_handle(my_handle_t handle);    void close_handle(my_handle_t handle);}
  • 参考的blog中有一篇google code上的文章,专门写extern "C"的,有兴趣的读者不妨去看看
《extern "C"的功能和用法研究》:https://blog.csdn.net/sss_369/article/details/84060561
[h2]今天的C++每日二题就到这里![/h2]不积跬步无以至千里,不积小流无以成江海!每天二题,与你一起奋斗在学习的最前线!
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:20
帖子:4
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP