随笔分类 -  C++

摘要:/* 以前听的一个故事,当年Java的创造者讲课的时候,一开始先拿一个简单的不能简单的小例子, 不断的扩展,最后成为一个复杂而完美的程序。 一个重要之重要的概念,就是栈。Lua与别的语言交互以及交换数据,是通过栈完成的。 */ #include using namespace std; extern "C" //这部分按C语言进行编译而不是C++ { #include "lua.... 阅读全文
posted @ 2017-11-07 11:27 Mr. Ant 阅读(465) 评论(0) 推荐(0) 编辑
摘要:今天突然看到一道关于形参和实参的题,我居然不求甚解。藐视过去在我的脑海里只有一个参数的概念,对于形参和实参的区别还真的不知道,作为学习了几年C++的人来说,真的深深感觉对不起自己对不起C++老师 T。T我觉得只要明白了值传递和地址传递,就应该能明白形参和实参的具体工作细节了。1、值传递 实参是变量... 阅读全文
posted @ 2014-08-14 19:31 Mr. Ant 阅读(36672) 评论(2) 推荐(4) 编辑
摘要:先看下面一段代码:class Node {};Node* CreateNode(){ }void Solve(){ Node *p=CreateNode(); //调用CreateNode函数 ... delete p; //释放资源}这样释放资源(delete)做法是正确的。但是,我们怎么能保证其他人在利用这个代码时在delete之前会不会使用continue语句或者return语句跳过delete,这样一来的话不就无法释放资源浪费资源了吗。有什么办法呢?即在程序结束之前一定会自动释放资源。auto_ptr(智能指针):其析构函数自动对其所指的函数调... 阅读全文
posted @ 2014-03-19 21:42 Mr. Ant 阅读(899) 评论(0) 推荐(0) 编辑
摘要:现看这样一个程序:void logCall(const string& funcname) //标记记录{ cout <<funcname <<endl;}class Custom{ public: Custom(const Custom& p):name(p.name) { logCall("Custom copy constructor!") } Custom& operator=(const Custom& p) { logCall("Custom copy assignment operator!&q 阅读全文
posted @ 2014-03-19 17:18 Mr. Ant 阅读(225) 评论(0) 推荐(0) 编辑
摘要:概念:编译器可以暗自为class创建default构造函数、copy构造函数、copy assignmengt构造函数,以及析构函数。比如你写下:struct Node{};这就好像你写下这样的代码:struct Node{ Node(){} //default构造函数 Node (const Node& p){} //copy构造函数 ~Node(){} //析构函数 Node& operator=(const Node& p){} // copy assignment操作符};唯有当这些函数被需要(被调用),它们才会被... 阅读全文
posted @ 2014-03-19 10:09 Mr. Ant 阅读(458) 评论(0) 推荐(0) 编辑
摘要:C++析构前言析构函数在什么时候会自动被调用,在什么时候需要手动来调用,真不好意思说偶学过C++…今日特此拨乱反正。C++析构误解正文对象在构造的时候系统会分配内存资源,对一些数据成员进行初始化或者赋值;一个良好的class需要有资源回收的机制,而这一操作便落在了析构函数的头上,析构函数来负责类内的资源的free。来看一段代码:class myclass{ public: myclass() { cout #include #include #include using namespace std;class myclass{ p... 阅读全文
posted @ 2014-03-06 21:06 Mr. Ant 阅读(271) 评论(0) 推荐(0) 编辑
摘要:虚函数是动态多态性的基础,其调用的方式是动态连篇(简单解释为只有在程序运行时才决定调用的是基类还是基类的派生类,系统会根据指针指向的对象来决定要调用的函数)非虚函数与其相反,是静态连篇(简单解释为在编译时期就已经决定了要调用的函数)class Shape{ public: Shape(){}; void draw() { cout draw(); s=new Circle(); s->draw(); return 0;}我主程序中的意思是要画方形和画圆形,可执行的结果都是画图形(叫你两儿子出来,怎么出来的都是你啊,扯... 阅读全文
posted @ 2014-03-06 20:43 Mr. Ant 阅读(665) 评论(0) 推荐(0) 编辑
摘要:一:静态数据成员:类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点:1、静态数据成员的定义。静态数据成员实际是类域中的全局变量,其定义方式与全局变量相同。例如:class base{ private: static const int x;};const int base::x=10; //初始化时不受private和protected访问限制注意:不要试图在头文件中定义(初始化)静态数据成员。2、静态数据成员被类的所有... 阅读全文
posted @ 2014-03-06 19:59 Mr. Ant 阅读(433) 评论(0) 推荐(0) 编辑
摘要:1、sizeof是运算符,而strlen是函数。2、sizeof操作符的运算结果为size_t,他在头文件中的typedef为unsigned int。该类型保证能容纳所操作对象的最大字节大小。3、sizeof可以用类型做参数,而strlen只能用char*做参数,且必须是以‘\0’结尾。4、数组做sizeof参数不退化,而做strlen就退化成指针。5、大部分编译程序在编译的时候就把sizeof处理过了,这就是sizeof(x)可以用来作为数组空间大小的原因。char str[20]=“0123456789”;a=strlen(str); // a=10,运行时确定b=sizeof(st.. 阅读全文
posted @ 2014-03-06 15:37 Mr. Ant 阅读(2096) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示