关闭

【C++面向对象】C++中访问控制符限定的是类而非对象

面向对象的语言中都设置了访控属性来控制外部对类成员的访问,这种访控属性是属于类的,而非属于对象! 怎么理解这句话呢? 首先看下面的例子: class Student { private string name; void foo(const Student& s) { std::cout<<s.name<<std::endl; } }; 上面的Student类中的f...
阅读(894) 评论(0)

【C++数据类型】const 引用的几点用法

一、作为函数形参 const引用作为函数形参,可以实现传入右值和常左值实参,我们通过和普通引用作为形参进行对比来说明这一点。 首先,如下代码,将普通引用作为函数print的形参,传入右值和常左值引用,然后进行编译: #include using std::cout; using std::endl; void print(int& a) { cout<<a<<endl; } int mai...
阅读(689) 评论(0)

用flask开发个人博客(14)—— flask中本地化时间的引用

flask中使用Flask_Mement来本地化日期和时间,在test.py文件中需要这样引入Flask_Mement模块: from flask.ext.moment import Moment Moment(app) 而在html中我们需要先引入moment.js和jquery.js两个js库,因为Flask_Mement需要依赖这两个库,我们在html文件中的head标签中进行引用:...
阅读(1116) 评论(0)

【C++内存管理】浅析C++中函数调用时的内存分配-函数调用过程中其他函数相关的内存分布

#include using namespace std; void print() { cout<<"hello world"<<endl; } void test() { int arr[1]; arr[2]=(int)print; } int main() { test(); return 0; } 以上代码,运行结果为: [Hyman@Hyman-PC cplus...
阅读(596) 评论(0)

用flask开发个人博客(13)—— 链接静态资源

之前介绍过flask中查看路由映射关系的方法: >>> from test import app >>> app.url_map Map([ user>, index>, ' (HEAD, OPTIONS, GET) -> static>, ' (HEAD, OPTIONS, GET) -> test>]) 上面的映射关系中,除了第三种之外都是我们在test.py中通过代码写入的映射关...
阅读(1829) 评论(0)

【C++内存管理】浅析C++中函数调用时的内存分配-函数局部变量的内存分配

学习了C++这么久,内存问题感觉一直是一个拦路虎一样,说懂了感觉懵懵懂懂,说没懂吧,感觉也不是啥都不知道。有必要把它整理出来作为自己的一个知识体系的架构吧。 现在就从函数调用时的内存管理入手。 一、函数中普通变量的内存分配问题 我们知道当一个函数进行调用时,函数的形参、以及函数的局部变量都会在栈中被分配内存,而栈又可分为两种,一种是栈底不变,栈顶不断的动态变化;另一种是栈顶不变,栈底在动态变...
阅读(544) 评论(0)

网络编程(12)—— 利用wait和waitpid函数消毁僵尸进程

僵尸进程的产生主要是因为父进程未向操作系统主动索要子进程的返回值(return或者exit),而要销毁僵尸进程,就需要父进程利用函数向操作系统索要该值。当子进程返回时把返回值交给操作系统,而操作系统会把该值放到内存中,我们要做的就是利用函数读取该内存块中值。 1、wait函数    wait函数是阻塞函数,其原型如下。wait函数可以等待任意子进程结束,其返回值是该子进程的进程ID。其参...
阅读(1214) 评论(0)

用flask开发个人博客(12)—— 自定义错误界面

flask中可自定义错误处理界面,如常见的404错误(客户端请求未知的页面或者路由),和500错误(服务器内部异常): test.py: @app.errorhandler(404) def page_not_found(e): return render_template('404.html'),404 @app.errorhandler(500) def internal_...
阅读(904) 评论(0)

网络编程(11)—— 进程和僵尸进程

一 新建进程     在linux中,可以用fork函数创建一个进程的副本(windows中无该功能),fork函数的原型如下: #include pid_t fork(void); 若在主进程调用fork函数,将会在内存中原样拷贝主进程而形成子进程,这样子进程和主进程就会同时享有fork之后的代码,而在主进程中fork函数返回子进程的ID,而在子进程中fork返回的进程ID值为0,通过f...
阅读(1960) 评论(0)

【C++数据类型】C++中的类型转换(三)

下面,主要介绍下C++中的reinterpret_cast 我们先看一个例子: #include using namespace std; int main() { int i=100; int* pi=&i; double* dpi=pi; cout<<*pi<<endl; return 0; } 我们知道,int类型的数据可以隐式转换成double类型的数据,那么int*能否...
阅读(451) 评论(0)

【C++数据类型】C++中的类型转换(二)

二、常类型转换         常类型转换,是去除变量的常量属性,我们先看下面的例子: #include using namespace std; int main() { const int i=100; int* pi=&i; *pi=200; cout<<i<<endl; return 0; }         请思考,这段代码可以编译通过吗?会不会正常打印出2...
阅读(459) 评论(0)

【C++数据类型】C++中的类型转换(一)

我们知道C++是一种强类型的语言,在任何变量在使用之前,必须先要进行声明。C++也支持类型之间的转换,而且在保证类型安全的情况下还可以做一些隐式的类型转换,如int类型变量可以直接隐式转换成char型: int i=0; char c=i; 除了隐式类型转换之外,C++还支持强制类型转换,共有6种转换形式: 1、沿用C语言中的: type2 var2=(type2)var1...
阅读(426) 评论(0)

【C++数据类型】C++中数组名的二义性

C++中数组名的二义性表现在在不同的上下文,数组名所代表的含义可能不一样,我们都知道数组名一般情况下表示数组首元素的地址,但是如下面的例子: #include using namespace std; void fun(int arr[3]) { cout<<sizeof(arr)<<endl; } int main() { int arr[3]={0}; cout<<sizeo...
阅读(530) 评论(0)

用flask开发个人博客(11)—— 模板中代码的重复使用

一、宏的引用 上节介绍过将宏保存到单独的html文件中,并重复引用的语法: {% import ‘macros.html’ as macros %} {% for comment in comments %} macros.render_comment(comment) {% endfor %} 通过宏定义到文件中,可以实现在其他文件中的重复利用,而且把宏集中到一个文件也...
阅读(1281) 评论(0)

用flask开发个人博客(10)—— Jinja2模板中的控制结构

前面介绍了Jinja2模板中的变量,下面介绍下模板中的控制结构。 if语句: {% if condition %} ... {% else %} ... {% endif %} 在模板文件中实现,输入用户名时浏览器上显示Hello 用户名,若不输入用户名显示Hello Stranger: test.html: {% if user %} Hello {{use...
阅读(1185) 评论(1)
31条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:402724次
    • 积分:6818
    • 等级:
    • 排名:第3790名
    • 原创:293篇
    • 转载:17篇
    • 译文:1篇
    • 评论:65条
    其它平台
    博客专栏