2019年7月20日整理发布
[h2][/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][/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]不积跬步无以至千里,不积小流无以成江海!每天二题,与你一起奋斗在学习的最前线!
|
|