访问控制与继承

成员的访问权限 public访问权限 一个类的public成员变量、成员函数,可以通过类的成员函数、类的实例变量进行访问 <实际上,类的成员

编译错误和运行错误的区别

(1) 编译错误: 就是编译器无法进行继续编译的错误,最基本的就是语法错误了,比如语句后面少了;或者 } 不匹配之类的,选择题一般是这样。编译错误可

类内特殊成员变量的初始化

有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括: a.引用 b.常量 c.静态 d

仿函数和函数指针

函数指针 函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。 函数指针的用途

Visual Studio中debug和release版本的区别

本质区别 Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Deb

C++中临时对象及返回值优化

临时对象 C++中有这样一种对象:它在代码中看不到,但是确实存在。它就是临时对象—由编译器定义的一个没有命名的非堆对象(non-heap obj

return语句的用法

含义 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,返回值可以是一个常量,变量,或是表达式。 作用 结束正在运行的函数,并返回函

C++函数返回值问题

调用函数的过程 栈空间是从高地址向低地址增长的。所以压栈即表示栈顶指针变小,而出栈则相反。 函数调用者维护了一个栈空间(stack),拥有栈底指

string操作总结

构造函数 default (1) string(); copy (2) string (const string& str); substring (3) string (const string& str, size_t pos, size_t len = npos); from c-string (4) string (const char* s); from buffer (5) string (const char* s, size_t n); fill (6) string (size_t n, char c); range (7) template <class InputIterator> string (InputIterator first, InputIterator last); initializer list (8) string (initializer_list<char> il); move (9) string (string&& str) noexcept;

如何打印自身代码

基本思想是: 在程序中生成字符串self; 加入把self改写成程序自身的算法编码; 输出self字符串。 1 2 3 #include <stdio.h>char* recurse="#include <stdio.h>%cchar* recurse=%c%s%c;%cint main(){printf(recurse,10,34,recurse,34,10,10);}%c"; int main(){printf(recurse,10,34,recurse,34,10,10);} 解析: 引号里面的内

define详解

预处理 预处理也称为预编译,它为编译做预备工作,主要进行代码文本的替换工作,用于处理#开头的指令,其中预处理器产生编译器的输出。 经过预处理器处

回调函数及其实现

回调函数的定义 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数

区别sizeof()和strlen()

区别 strlen执行的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到

地址的类型转换和数学计算

地址的类型转换 功能 对变量的值进行强制类型转换,是把值按照另外一种类型进行存储后读取,变量在内存中的存储形式发生变化. 对变量的地址进行强制类型

C++程序内存分配形式

程序中内存分配方式 (1) 正文段 (.text) 程序代码就存储在text 段,这是由C P U执行的机器指令部分。通常,正文段是可共享的,所以即使是经常执行的程序(如