c/c++
绿叶清风
这个作者很懒,什么都没留下…
展开
-
内联函数和宏定义的区别
用内联取代宏:1.内联函数在运行时可调试,而宏定义不可以;2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为内联函数。文章(一)内联函数与宏定义 在C中,常用预处理语句#define来代替一个函数定义。例如: #d转载 2014-09-01 12:13:06 · 738 阅读 · 0 评论 -
C++面试及答案解析
1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之转载 2016-04-11 11:36:42 · 1603 阅读 · 0 评论 -
C语言面试及答案分析
第一部分:基本概念及其它问答题1、关键字static的作用是什么?这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3). 在模块内,一个被声明为静原创 2016-04-06 10:50:08 · 2077 阅读 · 0 评论 -
C++虚函数及虚函数表解析
虚函数的定义: 虚函数必须是类的非静态成员函数(且非构造函数),其访问权限是public(可以定义为private or proteceted, 但是对于多态来说,没有意义。),在基类的类定义中定义虚函数的一般形式: virtual 函数返回值类型 虚函数名(形参表) { 函数体 }虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,转载 2015-01-22 17:43:34 · 808 阅读 · 0 评论 -
C++公有,私有,保护继承
公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被原创 2015-01-22 14:22:33 · 872 阅读 · 0 评论 -
std::string::find() 和 std::string::npos
int idx = str.find("abc");if (idx == string::npos)//相当于 (idx==-1) ... 上述代码中,idx的类型被定义为int,这是错误的,即使定义为 unsigned int 也是错的,它必须定义为string::size_type。 npos 是这样定义的:static const size_type npos原创 2014-12-30 15:43:03 · 899 阅读 · 0 评论 -
C++虚析构函数与纯虚析构函数
析构函数是当一个对象的生命周期结束时,会自动执行析构函数。析构函数的定义:#ifndef __A_H__#define __A_H__class A{public: A(void); A(int a, int b); ~A(void); //析构函数private: int a; int b; int c;};#e原创 2014-12-29 18:00:22 · 601 阅读 · 0 评论 -
c++学习笔记
父类与子类指针问题:参考1,父类指针引用父类对象,完全正常引用2,子类指针引用子类对象,子类会覆盖父类的同名函数,覆盖同名变量 3,父类指针引用子类对象,只能访问子类对象中包含的父类对象,父类对象的函数成员可以访问,子类的不可以访问,无法正常释放内存4,子类指针引用父类对象(子类可能把不属于父类的内存给delete,从而可能造成野指针),不可以,野指针内存冲突 ;访问父类对象可以通原创 2014-12-14 07:47:48 · 1192 阅读 · 1 评论 -
c++智能指针
智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷原创 2014-12-26 12:10:52 · 723 阅读 · 0 评论 -
c++ explicit关键字详解
explicit用来防止由构造函数定义的隐式转换。 隐式转换:可以由单个实参来调用的构造函数定义了一个从形参类型到该类类型的隐式转换。 例如: [cpp] view plaincopy#include using namespace std; class Test { private: int a;原创 2014-12-26 11:57:30 · 748 阅读 · 0 评论 -
linux环境下C语言网络编程入门
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。比如我们使用ftp程序从另外一 个地方获取文件的时候,原创 2015-01-12 09:45:32 · 1275 阅读 · 0 评论 -
c语言学习笔记一
类型转换隐式类型转换 整型、实型和字符型数据之间可以混合运算。例如: 10 + ’a’ + 1.5 - 8765.1234 * ’b’ 不同数据类型之间运算会进行自动类型转换强制类型转换n 一般形式:(类型名)(表达式)例 (int)(x + y) (int)x + y (double)原创 2014-12-17 09:43:02 · 4018 阅读 · 1 评论 -
友元函数 友元类
友元函数:说明: 在类型声明中将原型放入并在原型声明前加上关键字friend,但不要在定义时加上关键字friend,它的访问权限与类的成员函数的访问权限相同作用: 把其他类中函数作为自己的友员成员函数,让特定的类成员成为另一个类的友元函数,而不必让整个类成为友元,但在使用时,必须小心排列各种声明和定义顺序(且需用到向前声明)向前声明格式:class 类名 ;//向前声明本类cl转载 2014-09-01 15:24:35 · 752 阅读 · 0 评论 -
JNI在子线程中调用Java方法回传数据
场景:在JNI中需要一直不断的读取某个文件,开启了一条线程,当读取数据到的时候需要在线程中向java返回数据。实现步骤:一、当so库加载的时候,在c的实现文件记录一个全局的JavaVMstatic JavaVM *g_jvm = NULL;//当加载.so库时该方法会被VM自动调用,每个*.so库只能有一个这个入口,即使没有定义的也会有一个默认的方法,jint JNI_OnLoa...原创 2019-03-19 16:20:03 · 1524 阅读 · 0 评论