1、C++语言面向对象 + 标准特性;C语言面向过程,函数+结构体;C++里面可以运行C语言,可以调用C语言,反之 就不行C语言无法运行C++。
2.命名空间的定义与使用
作用:用于区分调用目标,当有多个重复名称的函数或变量,可用命名空间区分。
定义:
namespace AA{
void add(){}
};
namespace BB{
void add(){}
};
使用:
AA::add();
BB::add();
或
using namespace AA;
add();
using namespace BB;
add();
3.C语言的常量,其实是个假常量,C++的常量是真常量
int main3() {
const int number = 100;
// number = 200;
int * numP = &number;
*numP = 10000;
printf("%d\n", number);
return 0;
}
//最终输出10000,虽然定义了常量,但允许内存值被修改
int main4() {
const int number = 100;
// number = 200;
// 我的编译器,编译不通过, 有的编译器,编译通过,但是运行报错(结论:就不能改)
// int * numP = &number;
// *numP = 10000;
printf("%d\n", number);
return 0;
}
//假如按第一段代码写法,编译不通过或运行报错
typedef struct {
char name[20];
int age;
}Student;
void insertStudent(const Student & student) {
// 当student是常量是无法编译
strcpy(student.name, "李元霸");
Student student2 = {"刘奋", 43};
// 当student是常量是无法编译
student = student2;
}
//常量引用不允许修改
4、C语言不支持函数重载,C++支持且重载规则与java一致
int add(int number1)
return number1;
int add(int number1, int number2) {
return number1 + number2;
}
int add(int number1, int number2, int number3) {
return number1 + number2 + number3;
}
int add(double n1 = 100, int n2 = 200, int n3 = 300, int n4 = 400, bool isOK = 0) {
return 0;
}
5.C++堆空间与栈空间对象
int main
{
// 栈区开辟空间的变量,当离开作用域自动释放内存
Student student1;
// 赋值
student1.setAge(99);
student1.setName("李");
//堆空间创建的对象,需要显式delete才能释放内存,且delete后指针指向原来空间,需要手动指向NULL的地址
Student * student2 = new Student(); // new/delete
// 赋值
student2->setAge(88);
student2->setName("霸");
if (student2)
delete student2; // 必须手动释放堆空间的对象student2
student2 = NULL; // 指向NULL的地址区域
}
6.拷贝构造函数只在函数声明时调用
Student stu1("李鬼", 34);
Student stu2;
// 这样赋值是不会调用 自定义拷贝构造函数,但是会调用默认赋值
stu2 = stu1;
//拷贝函数调用
Student stu2 = stu1;
7.常量指针、指针常量、常量指针常量
常量指针:
int number = 9;
const int * numberP1 = &number;
*numberP1 = 100; // 报错,不允许去修改【常量指针】存放地址所对应的值
numberP1 = &number2; // OK,允许重新指向【常量指针】存放的地址
指针常量:
int* const numberP2 = &number;
*numberP2 = 100; // OK,允许去修改【指针常量】存放地址所对应的值
numberP2 = &number2; // 报错,不允许重新指向【指针常量】存放的地址
常量指针常量
const int * const numberP3 = &number;
*numberP3 = 100; // 报错,不允许去修改【常量指针常量】存放地址所对应的值
numberP3 = &number2; // 报错,不允许重新指向【常量指针常量】存放的地址
本文探讨了C++与C语言的区别,包括面向对象特性、命名空间使用、常量类型、函数重载、堆栈对象管理、拷贝构造函数及指针特性等内容。
8万+

被折叠的 条评论
为什么被折叠?



