![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C-C++
gaokewoo
这个作者很懒,什么都没留下…
展开
-
数组与指针的区别
数组与指针的区别 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。 (1)修改内容上的差别 char a[] = “hello”; a[0] = ‘X’; char *p = “world”; // 注意p 指向常量字符串 p[0] = ‘X’; // 编译器不能发现该错误,运行时错误 (2) 用运算符sizeof 可以计算出数组的转载 2014-04-26 21:54:05 · 249 阅读 · 0 评论 -
main 函数之前与之后
main 函数执行以前,还会执行什么代码 全局对象的构造函数会在main 函数之前执行。 main 主函数执行完毕后,是否可能会再执行一段代码 可以,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4 (void); void main( void ) { Stri转载 2014-04-26 21:55:13 · 417 阅读 · 0 评论 -
浅谈C++的智能指针
浅谈C++的智能指针 内存泄露是C++程序员都头疼的大问题。C++缺乏像JAVA、C#一样,拥有GC这么一项有利的武器,它将内存管理的部分权限交给了程序员。虽然GC的存在节约了开发、排错的时间与成本,但是C++为了追求运行速度而20年来坚决不予补充进其标准。(题外话:C++通过加大开发难度去换取执行速度的做法,在现在看来不知是否能给与正面的评价,还是留给将来再说吧。) 从此,在转载 2014-04-26 21:52:59 · 260 阅读 · 0 评论 -
C++中的static_cast,dynamic_cast,const_cast,reinterpret_cast
1 static_cast ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: ①用于类层次结构中基类和子类之间指针或引用的转换。 进行上行转换(把子类的指针或引用或对象转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是转载 2014-04-26 21:49:28 · 289 阅读 · 0 评论 -
重载全局new,delete
重载全局new,delete 对与new操作符,其实和sizeof一样,都是c++内置的,然而像strlen就不是了,strlen属于函数。对于new的功能我们是没有办法改变 的,当我们new一个对象时,new为我们做了两件事情,一、申请一块足够的内存空间供存放对象,对于new一个数组对象,编译器会计算出总共的空间,然 后执行类似c语言中malloc函数类似的功能。二、初始化对象,对于单个转载 2014-04-26 21:56:49 · 362 阅读 · 0 评论 -
关于STL容器的线程安全特性
标准C++的世界是相当保守和精简的。在这个纯洁的世界,所有可执行文件都是静态链接的。不存在内存映射文件和共享内存。没有窗口系统,没有网络,没有数据库,没有进程。在这种情况下,当发现标准没有提到任何关于线程的东西时你不该感到惊讶。你对STL的线程安全有的第一个想法应该是这取决于STL的实现。 当然,多线程程序是很普遍的,所以大部分STL厂商努力使他们的实现在线程环境中可以正常工作。但转载 2014-04-26 21:51:47 · 4772 阅读 · 0 评论 -
static关键字
static关键字 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 一、面向过程设计中的static 1、静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //转载 2014-04-26 21:52:26 · 242 阅读 · 0 评论 -
构造、析构、继承对对象的影响
数组 #include #include #include #include using namespace std; class A{ public: A(){cout }; int main() { cout A *a = new A[5]; // will call default constructor to原创 2014-04-26 22:08:32 · 313 阅读 · 0 评论 -
重载、覆盖、隐藏的区别
重载、覆盖、隐藏的区别 成员函数被重载的特征 (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 覆盖是指派生类函数覆盖基类函数,特征是 (1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)参数相同; (4)基类函数必须有virtual 关键字。 “隐藏”是转载 2014-04-26 21:57:22 · 372 阅读 · 0 评论 -
socket程序
socket程序 在Linux下写了个小的 socket程序,分为客户端和服务器端,服务端开一个端口(2000),做为一个daemon,等待客户的连接请求.一旦有客户连接,服务器端打印出客 户端的IP地址和端口,并且向服务器端发送欢迎信息和时间.下面是服务端的代码(tcpserver.c).由于这只是个简单的程序,所以只用了单线程实 现! #include #includ转载 2014-04-26 21:58:07 · 292 阅读 · 0 评论 -
new/delete与malloc/free区别
new/delete与malloc/free区别 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。new会自动调用构造函数,delete会自动调用析构函数,malloc和free不会。转载 2014-04-26 21:59:00 · 301 阅读 · 0 评论 -
引用和指针
引用和指针 ★ 相同点: 1. 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。 ★ 区别: 1. 指针是一个实体,而引用仅是个别名; 2. 引用使用时无需解引用(*),指针需要解引用; 3. 引用只能在定义时被初始化一次,之后不可变;指针可变; 引用“从一而终” ^_^ 4. 引用没有 const,指针有 const,const转载 2014-04-26 21:59:33 · 270 阅读 · 0 评论