C++语言基础(01)
2017-12-28 本文已影响13人
MrLuo
1.C与C++的关系
1.C++可以与C代码进行混编
2.C++面向对象编程语言、C面向过程的编程
3.C++对C的一个增强
2.指针常量和常量指针
//1.指针常量
//*p可以修改*p = 8;(OK)
//p不可以修改 p++(ERROR)
int a;
int * const p = &a
//2.常量指针
int a,b;
//*p不可修改 *p = 8;(ERROR)
//p 可以修改 p = &b (OK)
const int *p = &a;
//指针的话看const离谁( 是‘*’ 还是‘指针变量名’)比较近就是修饰谁的
//还有一种*p 和 p均不可改变了
const int * const p = &a;
总结与理解:
指针的值是要指向对象的地址。
主要取决于const修饰谁, 指针常量修饰的是指针,故指针的值是不可以改变的。不可以进行p++操作指向下一个地址。
常量指针是修饰指针指向的常量,这个常量的值不可以更改。
3.C++命名空间的概念
//标准命名空间(包含很多标准定义)
using namespace std;
作用:
提供了更小范围的作用域
用法:
namespace NSP_A
{
int a = 9;
}
namespace NSP_B
{
int a = 12;
//命名空间嵌套
//::访问修
namespace NSP_C
{
struct Teacher
{
char name[20];
int age;
};
}
}
void main()
{
//使用命名空间
using namespace NSP_A;
using namespace NSP_B;
cout << NSP_A::a << endl;
cout << NSP_B::a << endl;
//system.out.println() line
using NSP_B::NSP_C::Teacher;
Teacher t1;
t1.age = 12;
system("pause");
}
3 .一些特性
//类,可以同时声明多个同一级别
class MyTeacher
{
private:
public:
protected:
};
//结构体
struct MySuperTeacher
{
private:
char name[20];
int age;
public:
void say()
{
cout << "说话" << endl;
}
};
C++ C中&符号的区别:
int a = 10;
//C语言正常语法 &表示:取地址
//C++ &表示:引用
int &b = a; //b实际上就是另外一个别名
//引用必须要初始化
//int &c;
//引用的本质是:指针常量
int a = 10;
int b = 20;
//指针常量(这个指针所保存的地址不能改变)
int * const p1 = &a;
//p1 = &b; //不能改变
//int &c = a;
//c = b; //不能改变
//复杂类型的引用
struct Teacher
{
char name[20];
int age;
};
void myprint_0(Teacher p)
{
//p只是t1的拷贝,并不会影响t1
cout << p.age << endl;
p.age = 25;
}
void myprint_1(Teacher *p)
{
cout << p->age << endl;
p->age = 35;
}
void myprint_2(Teacher &p)
{
cout << p.age << endl;
p.age = 45;
}
void main()
{
Teacher t1;
t1.age = 20;
myprint_0(t1);
cout << t1.age << endl;
myprint_1(&t1);
cout << t1.age << endl;
myprint_2(t1);
cout << t1.age << endl;
system("pause");
}