C++知识总结

本文详细介绍了C++中的关键概念,包括字符串、指针和引用、数组、继承方式、静态变量、数据库操作以及C++中的关键字如const、static、mutable和explicit的用法。通过对内存管理、虚函数表、堆栈区别、内存溢出和内存泄漏的讨论,深入探讨了C++的内存分区和管理。此外,还涵盖了结构体内存对齐规则、函数重载、覆盖与重写等核心概念。
摘要由CSDN通过智能技术生成

1.字符串

(1)C++中每个字符串都以字符'\0'作为结尾。

(2)一个char类型占用一个字节;int类型占用4个字节;一个指针在32位系统上占用4个字节,在64位系统上占用8个字节。NULL空指针也占4或8个字节。

(3)定义一个字符串:char str[] = "abcd";,此时strlen(str)=4,sizeof(str)=5,因为sizeof求得的是占用的字节数,因此包含了结尾符号;而strlen求得的是字符串的长度,不包括最后的结尾符。因此str2=""空字符串的sizeof是1,strlen是0.

strlen的头文件是#include <string.h>

(4)string 类型的对象中末尾不会自动加'\0'字符,字符串中间可以存在'\0';string str,则不论str多长,sizeof(str)=sizeof(string)=32

(5)

2.指针和引用

https://blog.csdn.net/qq_27678917/article/details/70224813

3.数组

(1)int data[] = {1,2,3,4,5};int mat[3][3] = {1,2,3,4,5,6,7,8,9};此时sizeof(data)等于20.

(2)数组作为函数参数时,多维数组的除了第一维之外都要写明大小。如:int fun(int data[]) 和 int fun(int mat[][3]).

(3)当数组作为函数的参数进行传递时,数组会自动退化为同类型的指针,此时sizeof的结果为sizeof(指针)=4/8;

(4)动态数组:int *p = new int;//默认初始化;int *p = new int();//值初始化;int *p = new int(0);

(5)string *p = new string[2];//p指向一个大小为2的数组,数组元素的类型是string,此时sizeof(p)=8,sizeof(*p)=32;

4.公有继承和私有继承

在继承时: 

1、不管采用哪种形式(public, protected或private),基类中的私有成员都不可以被继承;如果非要在派生类中使用基类的私有成员,可以有两种方法:一是使用属性,二是使用友元类或友元函数。 

2、如果采用public形式,则基类除了私有成员的其它所有都被原样的继承到派生类中;即在基类中是public的,在派生类中还是public的,在基类中是protected的,在派生类中还是protected的。 

3、如果采用protected形式,则基类中除了私有成员的其它所有都被以protected的形式继承到派生类中。 
C++中的继承方式有: 
public、private、protected三种(它们直接影响到派生类的成员、及其对象对基类成员访问的规则)。 
(1)public(公有继承):继承时保持基类中各成员属性不变,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。 
(2)private(私有继承):继承时基类中各成员属性均变为private,并且基类中private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。  
(3)protected(保护性继承):继承时基类中各成员属性均变为protected,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。

5.静态变量

1、静态变量在内存的静态存储区,静态数据一直占有着该存储区单元直到程序结束;

2、静态局部变量只声明一次,一旦申请内存成功,不再接受重复申请;

3、静态局部变量的作用域与一般局部变量一样,二者区别在于以上两点:一般局部变量在函数调用结束后释放变量占用的存储单元,而静态局部变量不释放,直到程序结束才释放。函数中的静态变量是静态局部变量 函数退出后不被释放,在程序运行结束时才释放。只在函数中可访问。

4、静态全局变量的作用域只能是定义它的文件里,不是被其他文件使用。

6.数据库

在视图上使用INSERT语句,下列(C)情况可以进行插入操作.

A.视图中包含了使用统计函数的结果
B.视图由多个表连接而成,对多个表的列进行插入操作
C.视图全部包含了基本表中属性为NOT NULL的列
D.视图中使用了DICTINCT

解析:

视图除了进行查询记录外,也可以利用视图进行插入、更新、删除记录的操作,减少对基表中信息的直接操作,提高了数据的安全性。 
在视图上使用INSERT语

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值